From 43fc67743d297adffcd36e5d3c8893b9695125f9 Mon Sep 17 00:00:00 2001 From: Guilherme Andrade Del Cantoni Date: Thu, 31 Jan 2019 10:54:14 -0200 Subject: [PATCH] [Fixed #13] Correção de erro no tratamento de transação do andamento do trâmite --- dto/ProcedimentoAndamentoDTO.php | 7 +++++++ rn/ExpedirProcedimentoRN.php | 24 ++++++++---------------- rn/ProcedimentoAndamentoRN.php | 71 ++++++++++++++++++++--------------------------------------------------- rn/ReceberProcedimentoRN.php | 8 ++++---- rn/ReceberReciboTramiteRN.php | 2 +- 5 files changed, 40 insertions(+), 72 deletions(-) diff --git a/dto/ProcedimentoAndamentoDTO.php b/dto/ProcedimentoAndamentoDTO.php index 7f3ff4e..74906c5 100644 --- a/dto/ProcedimentoAndamentoDTO.php +++ b/dto/ProcedimentoAndamentoDTO.php @@ -32,4 +32,11 @@ class ProcedimentoAndamentoDTO extends InfraDTO { $this->configurarPK('IdAndamento', InfraDTO::$TIPO_PK_SEQUENCIAL); $this->configurarFK('IdTramite', 'md_pen_tramite', 'id_tramite', InfraDTO::$TIPO_FK_OPCIONAL); } + + public static function criarAndamento($strMensagem = 'Não informado', $strSituacao = 'N') { + $objProcedimentoAndamentoDTO = new ProcedimentoAndamentoDTO(); + $objProcedimentoAndamentoDTO->setStrSituacao($strSituacao); + $objProcedimentoAndamentoDTO->setStrMensagem($strMensagem); + return $objProcedimentoAndamentoDTO; + } } diff --git a/rn/ExpedirProcedimentoRN.php b/rn/ExpedirProcedimentoRN.php index 484ab1f..8f395a7 100644 --- a/rn/ExpedirProcedimentoRN.php +++ b/rn/ExpedirProcedimentoRN.php @@ -26,8 +26,8 @@ class ExpedirProcedimentoRN extends InfraRN { const TC_TIPO_CONTEUDO_VIDEO = 'vid'; const TC_TIPO_CONTEUDO_OUTROS = 'out'; - //TODO: Alterar codificao do SEI para reconhecer esse novo estado do processo - //Esse estado ser utilizado juntamente com os estados da expedio + //TODO: Alterar codificao do SEI para reconhecer esse novo estado do processo + //Esse estado ser utilizado juntamente com os estados da expedio const TE_PROCEDIMENTO_BLOQUEADO = '4'; const TE_PROCEDIMENTO_EM_PROCESSAMENTO = '5'; @@ -124,17 +124,14 @@ class ExpedirProcedimentoRN extends InfraRN { try { //Valida Permissão SessaoSEI::getInstance()->validarAuditarPermissao('pen_procedimento_expedir',__METHOD__, $objExpedirProcedimentoDTO); - $dblIdProcedimento = $objExpedirProcedimentoDTO->getDblIdProcedimento(); $this->barraProgresso->exibir(); - //Valida regras de negócio $this->barraProgresso->mover(ProcessoEletronicoINT::NEE_EXPEDICAO_ETAPA_VALIDACAO); $this->barraProgresso->setStrRotulo(ProcessoEletronicoINT::TEE_EXPEDICAO_ETAPA_VALIDACAO); $objInfraException = new InfraException(); - //Carregamento dos dados de processo e documento para validação e envio externo $objProcedimentoDTO = $this->consultarProcedimento($dblIdProcedimento); $objProcedimentoDTO->setArrObjDocumentoDTO($this->listarDocumentos($dblIdProcedimento)); @@ -142,7 +139,6 @@ class ExpedirProcedimentoRN extends InfraRN { $this->validarPreCondicoesExpedirProcedimento($objInfraException, $objProcedimentoDTO); $this->validarParametrosExpedicao($objInfraException, $objExpedirProcedimentoDTO); - //Apresentao da mensagens de validao na janela da barra de progresso if($objInfraException->contemValidacoes()){ $this->barraProgresso->mover(0); @@ -155,10 +151,8 @@ class ExpedirProcedimentoRN extends InfraRN { //Construo dos cabecalho para envio do processo $objCabecalho = $this->construirCabecalho($objExpedirProcedimentoDTO); - //Construo do processo para envio $objProcesso = $this->construirProcesso($dblIdProcedimento, $objExpedirProcedimentoDTO->getArrIdProcessoApensado()); - try { $param = new stdClass(); $param->novoTramiteDeProcesso = new stdClass(); @@ -170,14 +164,13 @@ class ExpedirProcedimentoRN extends InfraRN { } catch (\Exception $e) { throw new InfraException("Error Processing Request", $e); } - $this->atualizarPenProtocolo($dblIdProcedimento); - if (isset($novoTramite->dadosTramiteDeProcessoCriado)) { $objTramite = $novoTramite->dadosTramiteDeProcessoCriado; $this->objProcedimentoAndamentoRN->setOpts($dblIdProcedimento, $objTramite->IDT, ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO)); try { - $this->objProcedimentoAndamentoRN->cadastrar('Envio do metadados do processo', 'S'); + + $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Envio do metadados do processo', 'S')); $idAtividadeExpedicao = $this->bloquearProcedimentoExpedicao($objExpedirProcedimentoDTO, $objProcesso->idProcedimentoSEI); $this->objProcessoEletronicoRN->cadastrarTramiteDeProcesso( @@ -230,8 +223,7 @@ class ExpedirProcedimentoRN extends InfraRN { $this->barraProgresso->setStrRotulo(ProcessoEletronicoINT::TEE_EXPEDICAO_ETAPA_CONCLUSAO); // @join_tec US008.06 (#23092) - $this->objProcedimentoAndamentoRN->cadastrar('Concluído envio dos componentes do processo', 'S'); - + $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Concluído envio dos componentes do processo', 'S')); $this->receberReciboDeEnvio($objTramite->IDT); } @@ -253,7 +245,7 @@ class ExpedirProcedimentoRN extends InfraRN { $this->registrarAndamentoExpedicaoAbortada($objProcesso->idProcedimentoSEI); // @join_tec US008.06 (#23092) - $this->objProcedimentoAndamentoRN->cadastrar('Concluído envio dos componentes do processo', 'N'); + $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Concluído envio dos componentes do processo', 'N')); throw $e; } } @@ -1566,10 +1558,10 @@ class ExpedirProcedimentoRN extends InfraRN { //Bloquea documento para atualizao, j que ele foi visualizado $this->objDocumentoRN->bloquearConteudo($objDocumentoDTO); // @join_tec US008.05 (#23092) - $this->objProcedimentoAndamentoRN->cadastrar(sprintf('Enviando %s %s', $strNomeDocumento, $objComponenteDigitalDTO->getStrProtocoloDocumentoFormatado()), 'S'); + $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento(sprintf('Enviando %s %s', $strNomeDocumento, $objComponenteDigitalDTO->getStrProtocoloDocumentoFormatado()), 'S')); } catch (Exception $e) { // @join_tec US008.05 (#23092) - $this->objProcedimentoAndamentoRN->cadastrar(sprintf('Enviando %s %s', $strNomeDocumento, $objComponenteDigitalDTO->getStrProtocoloDocumentoFormatado()), 'N'); + $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento(sprintf('Enviando %s %s', $strNomeDocumento, $objComponenteDigitalDTO->getStrProtocoloDocumentoFormatado()), 'N')); throw new InfraException("Error Processing Request", $e); } } diff --git a/rn/ProcedimentoAndamentoRN.php b/rn/ProcedimentoAndamentoRN.php index 7f3b5f2..9e4c967 100644 --- a/rn/ProcedimentoAndamentoRN.php +++ b/rn/ProcedimentoAndamentoRN.php @@ -14,20 +14,7 @@ class ProcedimentoAndamentoRN extends InfraRN { protected $dblIdTramit; protected $numTarefa; - /** - * Instância do driver de conexão com o banco de dados - * - * @var Infra[Driver] - */ - protected $bancoSEI = null; - public function __destruct() { - - if(!empty($this->bancoSEI)) { - - $this->bancoSEI->fecharConexao(); - } - } /** * Invés de aproveitar o singleton do BancoSEI criamos uma nova instância para @@ -35,15 +22,8 @@ class ProcedimentoAndamentoRN extends InfraRN { * * @return Infra[Driver] */ - protected function inicializarObjInfraIBanco() { - - if(empty($this->bancoSEI)) { - - $this->bancoSEI = new BancoSEI(); - $this->bancoSEI->abrirConexao(); - } - - return $this->bancoSEI; + protected function inicializarObjInfraIBanco(){ + return BancoSEI::getInstance(); } @@ -58,40 +38,29 @@ class ProcedimentoAndamentoRN extends InfraRN { /** * Adiciona um novo andamento à um procedimento que esta sendo expedido para outra unidade * - * @param string $strMensagem - * @param string $strSituacao Tipo ENUM(S,N) - * @return null + * @param ProcedimentoAndamentoDTO $parProcedimentoAndamentoDTO */ - public function cadastrar($strMensagem = 'Não informado', $strSituacao = 'N'){ + protected function cadastrarControlado($parProcedimentoAndamentoDTO){ if($this->isSetOpts === false) { throw new InfraException('Log do cadastro de procedimento não foi configurado'); } - $objInfraIBanco = $this->inicializarObjInfraIBanco(); - $objInfraIBanco->abrirTransacao(); - - try{ - $hash = md5($this->dblIdProcedimento.$strMensagem); - - $objProcedimentoAndamentoDTO = new ProcedimentoAndamentoDTO(); - $objProcedimentoAndamentoDTO->setStrSituacao($strSituacao); - $objProcedimentoAndamentoDTO->setDthData(date('d/m/Y H:i:s')); - $objProcedimentoAndamentoDTO->setDblIdProcedimento($this->dblIdProcedimento); - $objProcedimentoAndamentoDTO->setDblIdTramite($this->dblIdTramit); - $objProcedimentoAndamentoDTO->setStrSituacao($strSituacao); - $objProcedimentoAndamentoDTO->setStrMensagem($strMensagem); - $objProcedimentoAndamentoDTO->setStrHash($hash); - $objProcedimentoAndamentoDTO->setNumTarefa($this->numTarefa); - - $objProcedimentoAndamentoBD = new ProcedimentoAndamentoBD($objInfraIBanco); - $objProcedimentoAndamentoBD->cadastrar($objProcedimentoAndamentoDTO); - - $objInfraIBanco->confirmarTransacao(); - - } catch (Exception $e) { - $objInfraIBanco->cancelarTransacao(); - throw $e; - } + $strMensagem = ($parProcedimentoAndamentoDTO->isSetStrMensagem()) ? $parProcedimentoAndamentoDTO->getStrMensagem() : 'Não informado'; + $strSituacao = ($parProcedimentoAndamentoDTO->isSetStrSituacao()) ? $parProcedimentoAndamentoDTO->getStrSituacao() : 'N'; + + $hash = md5($this->dblIdProcedimento . $strMensagem); + $objProcedimentoAndamentoDTO = new ProcedimentoAndamentoDTO(); + $objProcedimentoAndamentoDTO->setStrSituacao($strSituacao); + $objProcedimentoAndamentoDTO->setDthData(date('d/m/Y H:i:s')); + $objProcedimentoAndamentoDTO->setDblIdProcedimento($this->dblIdProcedimento); + $objProcedimentoAndamentoDTO->setDblIdTramite($this->dblIdTramit); + $objProcedimentoAndamentoDTO->setStrSituacao($strSituacao); + $objProcedimentoAndamentoDTO->setStrMensagem($strMensagem); + $objProcedimentoAndamentoDTO->setStrHash($hash); + $objProcedimentoAndamentoDTO->setNumTarefa($this->numTarefa); + + $objProcedimentoAndamentoBD = new ProcedimentoAndamentoBD($this->getObjInfraIBanco()); + $objProcedimentoAndamentoBD->cadastrar($objProcedimentoAndamentoDTO); } } diff --git a/rn/ReceberProcedimentoRN.php b/rn/ReceberProcedimentoRN.php index 62e52a3..50c37df 100644 --- a/rn/ReceberProcedimentoRN.php +++ b/rn/ReceberProcedimentoRN.php @@ -188,7 +188,7 @@ class ReceberProcedimentoRN extends InfraRN // @join_tec US008.08 (#23092) $this->objProcedimentoAndamentoRN->setOpts($objProcedimentoDTO->getDblIdProcedimento(), $parNumIdentificacaoTramite, ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO)); - $this->objProcedimentoAndamentoRN->cadastrar('Obtendo metadados do processo', 'S'); + $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Obtendo metadados do processo', 'S')); $this->gravarLogDebug("Registrando trâmite externo do processo", 4); @@ -246,15 +246,15 @@ class ReceberProcedimentoRN extends InfraRN // @join_tec US008.09 (#23092) $strMensagemRecebimento = sprintf('Recebendo %s %s', $strNomeDocumento, $objComponenteDigitalDTOEnviado->getStrProtocoloDocumentoFormatado()); - $this->objProcedimentoAndamentoRN->cadastrar($strMensagemRecebimento, 'S'); + $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento($strMensagemRecebimento, 'S')); $this->gravarLogDebug($strMensagemRecebimento, 6); } } // @join_tec US008.10 (#23092) - $this->objProcedimentoAndamentoRN->cadastrar('Todos os componentes digitais foram recebidos', 'S'); + $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Todos os componentes digitais foram recebidos', 'S')); }else{ - $this->objProcedimentoAndamentoRN->cadastrar('Nenhum componente digital para receber', 'S'); + $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Nenhum componente digital para receber', 'S')); } } } diff --git a/rn/ReceberReciboTramiteRN.php b/rn/ReceberReciboTramiteRN.php index 3b44bdd..323e7bc 100644 --- a/rn/ReceberReciboTramiteRN.php +++ b/rn/ReceberReciboTramiteRN.php @@ -202,7 +202,7 @@ class ReceberReciboTramiteRN extends InfraRN $objProtocoloDTO = $objProtocoloBD->consultar($objProtocoloDTO); $this->objProcedimentoAndamentoRN->setOpts($objProcessoEletronicoDTO->getDblIdProcedimento(), $parNumIdTramite, ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO)); - $this->objProcedimentoAndamentoRN->cadastrar(sprintf('Trâmite do processo %s foi concluído', $objProtocoloDTO->getStrProtocoloFormatado()), 'S'); + $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento(sprintf('Trâmite do processo %s foi concluído', $objProtocoloDTO->getStrProtocoloFormatado()), 'S')); //Registra o recbimento do recibo no histórico e realiza a conclusão do processo $this->registrarRecebimentoRecibo($objProtocoloDTO->getDblIdProtocolo(), $objProtocoloDTO->getStrProtocoloFormatado(), $parNumIdTramite); $objPenTramiteProcessadoRN = new PenTramiteProcessadoRN(PenTramiteProcessadoRN::STR_TIPO_RECIBO); -- libgit2 0.21.2