From f498eb9068570c1460761e705d077c28153d520a Mon Sep 17 00:00:00 2001 From: Guilherme Andrade Del Cantoni Date: Tue, 9 Apr 2019 15:21:30 -0300 Subject: [PATCH] Correção de problema com processos travados no status 3 - Metadados Recebidos --- rn/PendenciasTramiteRN.php | 6 ++++-- rn/ProcessoEletronicoRN.php | 4 ++-- rn/ReceberProcedimentoRN.php | 81 ++++++++++++++++++++++++++++++++++++++++----------------------------------------- 3 files changed, 46 insertions(+), 45 deletions(-) diff --git a/rn/PendenciasTramiteRN.php b/rn/PendenciasTramiteRN.php index c2908e6..46e3a24 100644 --- a/rn/PendenciasTramiteRN.php +++ b/rn/PendenciasTramiteRN.php @@ -7,6 +7,7 @@ error_reporting(E_ALL); class PendenciasTramiteRN extends InfraRN { const TIMEOUT_SERVICO_PENDENCIAS = 300; + const RECUPERAR_TODAS_PENDENCIAS = true; private static $instance = null; private $strEnderecoServicoPendencias = null; @@ -121,7 +122,7 @@ class PendenciasTramiteRN extends InfraRN { //Obter todos os trâmites pendentes antes de iniciar o monitoramento $arrPendenciasRetornadas = array(); $objProcessoEletronicoRN = new ProcessoEletronicoRN(); - $arrObjPendenciasDTO = $objProcessoEletronicoRN->listarPendencias(false) or array(); + $arrObjPendenciasDTO = $objProcessoEletronicoRN->listarPendencias(self::RECUPERAR_TODAS_PENDENCIAS) or array(); $this->gravarLogDebug("Recuperado todas pendências de trâmite do PEN: " . count($arrObjPendenciasDTO), 2); @@ -235,7 +236,8 @@ class PendenciasTramiteRN extends InfraRN { break; default: - throw new Exception('Situação do trâmite não pode ser identificada.'); + $strStatus = $objPendencia->getStrStatus(); + InfraDebug::getInstance()->gravar("Situação do trâmite ($strStatus) não pode ser tratada."); break; } diff --git a/rn/ProcessoEletronicoRN.php b/rn/ProcessoEletronicoRN.php index d40f684..58b2297 100644 --- a/rn/ProcessoEletronicoRN.php +++ b/rn/ProcessoEletronicoRN.php @@ -652,8 +652,8 @@ class ProcessoEletronicoRN extends InfraRN { //TODO: Tratar a exceção de recebimento de um trâmite que já havia sido tratado no sistema - protected function cadastrarTramiteDeProcessoInternoControlado(ProcessoEletronicoDTO $parObjProcessoEletronicoDTO) { - + protected function cadastrarTramiteDeProcessoInternoControlado(ProcessoEletronicoDTO $parObjProcessoEletronicoDTO) + { if(!isset($parObjProcessoEletronicoDTO)) { throw new InfraException('Parâmetro $parObjProcessoEletronicoDTO não informado.'); } diff --git a/rn/ReceberProcedimentoRN.php b/rn/ReceberProcedimentoRN.php index 8cd00a9..4330944 100644 --- a/rn/ReceberProcedimentoRN.php +++ b/rn/ReceberProcedimentoRN.php @@ -1636,7 +1636,7 @@ static function comparacaoOrdemDocumentos($parDocumento1, $parDocumento2) } -public function receberTramitesRecusados($parNumIdentificacaoTramite) +protected function receberTramitesRecusadosControlado($parNumIdentificacaoTramite) { try { if (empty($parNumIdentificacaoTramite)) { @@ -1659,53 +1659,55 @@ public function receberTramitesRecusados($parNumIdentificacaoTramite) $objTramiteBD = new TramiteBD(BancoSEI::getInstance()); $objTramiteDTO = $objTramiteBD->consultar($objTramiteDTO); - if(!isset($objTramiteDTO)){ - throw new InfraException("Não foi encontrado no sistema o trâmite de número {$parNumIdentificacaoTramite} para realizar a ciência da recusa"); - } - - SessaoSEI::getInstance(false)->simularLogin('SEI', null, null, $objTramiteDTO->getNumIdUnidade()); + if(isset($objTramiteDTO)){ + //throw new InfraException("Não foi encontrado no sistema o trâmite de número {$parNumIdentificacaoTramite} para realizar a ciência da recusa"); + SessaoSEI::getInstance(false)->simularLogin('SEI', null, null, $objTramiteDTO->getNumIdUnidade()); //Busca os dados do procedimento - $this->gravarLogDebug("Buscando os dados de procedimento com NRE " . $tramite->NRE, 2); - $objProcessoEletronicoDTO = new ProcessoEletronicoDTO(); - $objProcessoEletronicoDTO->setStrNumeroRegistro($tramite->NRE); - $objProcessoEletronicoDTO->retDblIdProcedimento(); - $objProcessoEletronicoBD = new ProcessoEletronicoBD($this->getObjInfraIBanco()); - $objProcessoEletronicoDTO = $objProcessoEletronicoBD->consultar($objProcessoEletronicoDTO); + $this->gravarLogDebug("Buscando os dados de procedimento com NRE " . $tramite->NRE, 2); + $objProcessoEletronicoDTO = new ProcessoEletronicoDTO(); + $objProcessoEletronicoDTO->setStrNumeroRegistro($tramite->NRE); + $objProcessoEletronicoDTO->retDblIdProcedimento(); + $objProcessoEletronicoBD = new ProcessoEletronicoBD($this->getObjInfraIBanco()); + $objProcessoEletronicoDTO = $objProcessoEletronicoBD->consultar($objProcessoEletronicoDTO); //Busca a última atividade de trâmite externo - $this->gravarLogDebug("Buscando última atividade de trâmite externo do processo " . $objProcessoEletronicoDTO->getDblIdProcedimento(), 2); - $objAtividadeDTO = new AtividadeDTO(); - $objAtividadeDTO->setDblIdProtocolo($objProcessoEletronicoDTO->getDblIdProcedimento()); - $objAtividadeDTO->setNumIdTarefa(ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO)); - $objAtividadeDTO->setNumMaxRegistrosRetorno(1); - $objAtividadeDTO->setOrdDthAbertura(InfraDTO::$TIPO_ORDENACAO_DESC); - $objAtividadeDTO->retNumIdAtividade(); - $objAtividadeBD = new AtividadeBD($this->getObjInfraIBanco()); - $objAtividadeDTO = $objAtividadeBD->consultar($objAtividadeDTO); + $this->gravarLogDebug("Buscando última atividade de trâmite externo do processo " . $objProcessoEletronicoDTO->getDblIdProcedimento(), 2); + $objAtividadeDTO = new AtividadeDTO(); + $objAtividadeDTO->setDblIdProtocolo($objProcessoEletronicoDTO->getDblIdProcedimento()); + $objAtividadeDTO->setNumIdTarefa(ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO)); + $objAtividadeDTO->setNumMaxRegistrosRetorno(1); + $objAtividadeDTO->setOrdDthAbertura(InfraDTO::$TIPO_ORDENACAO_DESC); + $objAtividadeDTO->retNumIdAtividade(); + $objAtividadeBD = new AtividadeBD($this->getObjInfraIBanco()); + $objAtividadeDTO = $objAtividadeBD->consultar($objAtividadeDTO); //Busca a unidade de destino - $this->gravarLogDebug("Buscando informações sobre a unidade de destino", 2); - $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); - $objAtributoAndamentoDTO->setNumIdAtividade($objAtividadeDTO->getNumIdAtividade()); - $objAtributoAndamentoDTO->setStrNome('UNIDADE_DESTINO'); - $objAtributoAndamentoDTO->retStrValor(); - $objAtributoAndamentoBD = new AtributoAndamentoBD($this->getObjInfraIBanco()); - $objAtributoAndamentoDTO = $objAtributoAndamentoBD->consultar($objAtributoAndamentoDTO); + $this->gravarLogDebug("Buscando informações sobre a unidade de destino", 2); + $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); + $objAtributoAndamentoDTO->setNumIdAtividade($objAtividadeDTO->getNumIdAtividade()); + $objAtributoAndamentoDTO->setStrNome('UNIDADE_DESTINO'); + $objAtributoAndamentoDTO->retStrValor(); + $objAtributoAndamentoBD = new AtributoAndamentoBD($this->getObjInfraIBanco()); + $objAtributoAndamentoDTO = $objAtributoAndamentoBD->consultar($objAtributoAndamentoDTO); //Monta o DTO de receber tramite recusado - $this->gravarLogDebug("Preparando recebimento de trâmite " . $parNumIdentificacaoTramite . " recusado", 2); - $objReceberTramiteRecusadoDTO = new ReceberTramiteRecusadoDTO(); - $objReceberTramiteRecusadoDTO->setNumIdTramite($parNumIdentificacaoTramite); - $objReceberTramiteRecusadoDTO->setNumIdProtocolo($objProcessoEletronicoDTO->getDblIdProcedimento()); - $objReceberTramiteRecusadoDTO->setNumIdUnidadeOrigem(null); - $objReceberTramiteRecusadoDTO->setNumIdTarefa(ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_RECUSADO)); - $objReceberTramiteRecusadoDTO->setStrMotivoRecusa(utf8_decode($tramite->justificativaDaRecusa)); - $objReceberTramiteRecusadoDTO->setStrNomeUnidadeDestino($objAtributoAndamentoDTO->getStrValor()); + $this->gravarLogDebug("Preparando recebimento de trâmite " . $parNumIdentificacaoTramite . " recusado", 2); + $objReceberTramiteRecusadoDTO = new ReceberTramiteRecusadoDTO(); + $objReceberTramiteRecusadoDTO->setNumIdTramite($parNumIdentificacaoTramite); + $objReceberTramiteRecusadoDTO->setNumIdProtocolo($objProcessoEletronicoDTO->getDblIdProcedimento()); + $objReceberTramiteRecusadoDTO->setNumIdUnidadeOrigem(null); + $objReceberTramiteRecusadoDTO->setNumIdTarefa(ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_RECUSADO)); + $objReceberTramiteRecusadoDTO->setStrMotivoRecusa(utf8_decode($tramite->justificativaDaRecusa)); + $objReceberTramiteRecusadoDTO->setStrNomeUnidadeDestino($objAtributoAndamentoDTO->getStrValor()); //Faz o tratamento do processo e do trâmite recusado - $this->gravarLogDebug("Atualizando dados do processo " . $objProcessoEletronicoDTO->getDblIdProcedimento() ." e do trâmite recusado " . $parNumIdentificacaoTramite, 2); - $this->receberTramiteRecusadoInterno($objReceberTramiteRecusadoDTO); + $this->gravarLogDebug("Atualizando dados do processo " . $objProcessoEletronicoDTO->getDblIdProcedimento() ." e do trâmite recusado " . $parNumIdentificacaoTramite, 2); + $this->receberTramiteRecusadoInterno($objReceberTramiteRecusadoDTO); + } + + $this->gravarLogDebug("Notificando serviços do PEN sobre ciência da recusa do trâmite " . $parNumIdentificacaoTramite, 4); + $this->objProcessoEletronicoRN->cienciaRecusa($parNumIdentificacaoTramite); } catch (Exception $e) { $mensagemErro = InfraException::inspecionar($e); @@ -1763,9 +1765,6 @@ protected function receberTramiteRecusadoInternoControlado(ReceberTramiteRecusad $objProtocolo->setStrSinObteveRecusa('S'); $objProtocoloBD = new ProtocoloBD($this->getObjInfraIBanco()); $objProtocoloBD->alterar($objProtocolo); - - $this->gravarLogDebug("Notificando serviços do PEN sobre ciência da recusa do trâmite " . $objReceberTramiteRecusadoDTO->getNumIdTramite(), 4); - $this->objProcessoEletronicoRN->cienciaRecusa($objReceberTramiteRecusadoDTO->getNumIdTramite()); } -- libgit2 0.21.2