From 22361c95205c078bf3db68327ab88e8c6b2ba114 Mon Sep 17 00:00:00 2001 From: Guilherme Andrade Del Cantoni Date: Wed, 27 Mar 2019 18:40:05 -0300 Subject: [PATCH] [Fixed #54] Correção de problema no envio da ordenação dos documentos modificados na árvore --- pen_procedimento_expedir_validar.php | 53 +++++++++++++++++++++++++---------------------------- rn/ExpedirProcedimentoRN.php | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------ 2 files changed, 82 insertions(+), 52 deletions(-) diff --git a/pen_procedimento_expedir_validar.php b/pen_procedimento_expedir_validar.php index 5f4be57..57c80c3 100644 --- a/pen_procedimento_expedir_validar.php +++ b/pen_procedimento_expedir_validar.php @@ -3,7 +3,7 @@ require_once dirname(__FILE__) . '/../../SEI.php'; session_start(); - + //print_r($_POST); exit; @@ -17,43 +17,43 @@ $objInfraException = new InfraException(); try { - + if(!array_key_exists('id_procedimento', $_GET) || empty($_GET['id_procedimento'])) { throw new InfraException('Nenhum procedimento foi informado', 'Desconhecido'); } - + $dblIdProcedimento = $_GET['id_procedimento']; $objExpedirProcedimentosRN = new ExpedirProcedimentoRN(); $objProcedimentoDTO = $objExpedirProcedimentosRN->consultarProcedimento($dblIdProcedimento); - + if(empty($objProcedimentoDTO)) { - throw new InfraException('Procedimento não foi localizado', 'Desconhecido'); + throw new InfraException('Procedimento não foi localizado', 'Desconhecido'); } - + // Utilizamos o protocolo para criar um indice para separar os erros entre o // processo e os seus processos apensados $strProtocoloFormatado = $objProcedimentoDTO->getStrProtocoloProcedimentoFormatado(); - + $objRelProtocoloProtocoloRN = new RelProtocoloProtocoloRN(); - + //Consulta do ID Pai $objRelProtocoloProtocoloDTO1 = new RelProtocoloProtocoloDTO(); $objRelProtocoloProtocoloDTO1->setDblIdProtocolo1($dblIdProcedimento); $objRelProtocoloProtocoloDTO1->setStrStaAssociacao(RelProtocoloProtocoloRN ::$TA_PROCEDIMENTO_ANEXADO); $objRelProtocoloProtocoloDTO1->retDblIdProtocolo1(); - + //Consulta do ID Filhos $objRelProtocoloProtocoloDTO2 = new RelProtocoloProtocoloDTO(); $objRelProtocoloProtocoloDTO2->setDblIdProtocolo2($dblIdProcedimento); $objRelProtocoloProtocoloDTO2->setStrStaAssociacao(RelProtocoloProtocoloRN ::$TA_PROCEDIMENTO_ANEXADO); $objRelProtocoloProtocoloDTO2->retDblIdProtocolo2(); - + $numCount1 = $objRelProtocoloProtocoloRN->contarRN0843($objRelProtocoloProtocoloDTO1); $numCount2 = $objRelProtocoloProtocoloRN->contarRN0843($objRelProtocoloProtocoloDTO2); - + if ($numCount1 > 0 && $numCount2 > 0) { - $objInfraException->adicionarValidacao('Esse processo está anexado a outro processo e possui outros em anexo, portanto não pode ser tramitado.', $strProtocoloFormatado); + $objInfraException->adicionarValidacao('Esse processo está anexado a outro processo e possui outros em anexo, portanto não pode ser tramitado.', $strProtocoloFormatado); } else { if ($numCount1 > 0) { $objInfraException->adicionarValidacao('Esse processo possuí outros em anexo, portanto não pode ser tramitado externamente.', $strProtocoloFormatado); @@ -63,7 +63,7 @@ try { $objInfraException->adicionarValidacao('Esse processo está anexado a outro processo, portanto não pode ser tramitado.', $strProtocoloFormatado); } } - + if(!array_key_exists('txtProtocoloExibir', $_POST) || empty($_POST['txtProtocoloExibir'])) { $objInfraException->adicionarValidacao('Informe o Protocolo', $strProtocoloFormatado); } @@ -71,7 +71,7 @@ try { if(!array_key_exists('selRepositorioEstruturas', $_POST) || empty($_POST['selRepositorioEstruturas'])) { $objInfraException->adicionarValidacao('Informe o Repositório de Estruturas Organizacionais', $strProtocoloFormatado); } - + if(!array_key_exists('hdnIdUnidade', $_POST) || empty($_POST['hdnIdUnidade'])) { $objInfraException->adicionarValidacao('Informe Unidade de destino', $strProtocoloFormatado); } @@ -96,34 +96,31 @@ try { $objExpedirProcedimentosRN->validarPreCondicoesExpedirProcedimento($objInfraException, $objProcedimentoDTO, $strProtocoloFormatado); } } - } -} -catch(\InfraException $e) { - - $objInfraException->adicionarValidacao($e->getTraceAsString()); + } +} +catch(\InfraException $e) { + $strmensagemErro = InfraException::inspecionar($e); + $objInfraException->adicionarValidacao($strmensagemErro); + LogSEI::getInstance()->gravar($strmensagemErro); } if($objInfraException->contemValidacoes()) { $arrErros = array(); - foreach($objInfraException->getArrObjInfraValidacao() as $objInfraValidacao) { - $strAtributo = $objInfraValidacao->getStrAtributo(); - if(!array_key_exists($strAtributo, $arrErros)){ $arrErros[$strAtributo] = array(); } $arrErros[$strAtributo][] = utf8_encode($objInfraValidacao->getStrDescricao()); - } - - $arrResponse['erros'] = $arrErros; + } + + $arrResponse['erros'] = $arrErros; } else { - $arrResponse['sucesso'] = true; -} +} print json_encode($arrResponse); -exit(0); \ No newline at end of file +exit(0); diff --git a/rn/ExpedirProcedimentoRN.php b/rn/ExpedirProcedimentoRN.php index dbaca87..667d874 100644 --- a/rn/ExpedirProcedimentoRN.php +++ b/rn/ExpedirProcedimentoRN.php @@ -1409,31 +1409,64 @@ class ExpedirProcedimentoRN extends InfraRN { throw new InfraException('Parâmetro $idProcedimento não informado.'); } - $documentoDTO = new DocumentoDTO(); - $documentoDTO->setDblIdProcedimento($idProcedimento); - $documentoDTO->retStrDescricaoUnidadeGeradoraProtocolo(); - $documentoDTO->retNumIdOrgaoUnidadeGeradoraProtocolo(); - $documentoDTO->retStrSiglaUnidadeGeradoraProtocolo(); - $documentoDTO->retStrStaNivelAcessoLocalProtocolo(); - $documentoDTO->retStrProtocoloDocumentoFormatado(); - $documentoDTO->retStrStaEstadoProtocolo(); - $documentoDTO->retNumIdUsuarioGeradorProtocolo(); - $documentoDTO->retStrStaProtocoloProtocolo(); - $documentoDTO->retNumIdUnidadeResponsavel(); - $documentoDTO->retStrDescricaoProtocolo(); - $documentoDTO->retDtaGeracaoProtocolo(); - $documentoDTO->retDblIdProcedimento(); - $documentoDTO->retDblIdDocumento(); - $documentoDTO->retStrNomeSerie(); - $documentoDTO->retNumIdSerie(); - $documentoDTO->retStrConteudoAssinatura(); - $documentoDTO->retStrNumero(); - $documentoDTO->retNumIdTipoConferencia(); - $documentoDTO->retStrStaDocumento(); - $documentoDTO->retNumIdHipoteseLegalProtocolo(); - $documentoDTO->setOrdStrProtocoloDocumentoFormatado(InfraDTO::$TIPO_ORDENACAO_ASC); + //Recupera toda a lista de documentos vinculados ao processo, considerando a ordenação definida pelo usuário + $arrTipoAssociacao = array(RelProtocoloProtocoloRN::$TA_DOCUMENTO_ASSOCIADO, RelProtocoloProtocoloRN::$TA_DOCUMENTO_MOVIDO); + $objRelProtocoloProtocoloDTO = new RelProtocoloProtocoloDTO(); + $objRelProtocoloProtocoloDTO->retDblIdRelProtocoloProtocolo(); + $objRelProtocoloProtocoloDTO->retDblIdProtocolo1(); + $objRelProtocoloProtocoloDTO->retDblIdProtocolo2(); + $objRelProtocoloProtocoloDTO->retStrStaAssociacao(); + $objRelProtocoloProtocoloDTO->setStrStaAssociacao($arrTipoAssociacao, InfraDTO::$OPER_IN); + $objRelProtocoloProtocoloDTO->setDblIdProtocolo1($idProcedimento); + $objRelProtocoloProtocoloDTO->setOrdNumSequencia(InfraDTO::$TIPO_ORDENACAO_ASC); + + $objRelProtocoloProtocoloRN = new RelProtocoloProtocoloRN(); + $arrObjRelProtocoloProtocoloDTO = $objRelProtocoloProtocoloRN->listarRN0187($objRelProtocoloProtocoloDTO); + + $arrIdDocumentos = array(); + foreach($arrObjRelProtocoloProtocoloDTO as $objRelProtocoloProtocoloDTO) { + if ($objRelProtocoloProtocoloDTO->getStrStaAssociacao()==RelProtocoloProtocoloRN::$TA_DOCUMENTO_ASSOCIADO || + $objRelProtocoloProtocoloDTO->getStrStaAssociacao()==RelProtocoloProtocoloRN::$TA_DOCUMENTO_MOVIDO) { + + $arrIdDocumentos[] = $objRelProtocoloProtocoloDTO->getDblIdProtocolo2(); + } + } + + $objDocumentoDTO = new DocumentoDTO(); + $objDocumentoDTO->retStrDescricaoUnidadeGeradoraProtocolo(); + $objDocumentoDTO->retNumIdOrgaoUnidadeGeradoraProtocolo(); + $objDocumentoDTO->retStrSiglaUnidadeGeradoraProtocolo(); + $objDocumentoDTO->retStrStaNivelAcessoLocalProtocolo(); + $objDocumentoDTO->retStrProtocoloDocumentoFormatado(); + $objDocumentoDTO->retStrStaEstadoProtocolo(); + $objDocumentoDTO->retNumIdUsuarioGeradorProtocolo(); + $objDocumentoDTO->retStrStaProtocoloProtocolo(); + $objDocumentoDTO->retNumIdUnidadeResponsavel(); + $objDocumentoDTO->retStrDescricaoProtocolo(); + $objDocumentoDTO->retDtaGeracaoProtocolo(); + $objDocumentoDTO->retDblIdProcedimento(); + $objDocumentoDTO->retDblIdDocumento(); + $objDocumentoDTO->retStrNomeSerie(); + $objDocumentoDTO->retNumIdSerie(); + $objDocumentoDTO->retStrConteudoAssinatura(); + $objDocumentoDTO->retStrNumero(); + $objDocumentoDTO->retNumIdTipoConferencia(); + $objDocumentoDTO->retStrStaDocumento(); + $objDocumentoDTO->retNumIdHipoteseLegalProtocolo(); + $objDocumentoDTO->setDblIdDocumento($arrIdDocumentos, InfraDTO::$OPER_IN); + + $arrObjDocumentoDTOBanco = $this->objDocumentoRN->listarRN0008($objDocumentoDTO); + $arrObjDocumentoDTOIndexado = InfraArray::indexarArrInfraDTO($arrObjDocumentoDTOBanco, 'IdDocumento'); + + //Mantem ordenação definida pelo usuário + $arrObjDocumentoDTO = array(); + foreach($arrIdDocumentos as $dblIdDocumento){ + if (isset($arrObjDocumentoDTOIndexado[$dblIdDocumento])){ + $arrObjDocumentoDTO[$dblIdDocumento] = $arrObjDocumentoDTOIndexado[$dblIdDocumento]; + } + } - return $this->objDocumentoRN->listarRN0008($documentoDTO); + return $arrObjDocumentoDTO; } /** -- libgit2 0.21.2