Commit 88bb8bc860d3cd391d90b9a46f54535016e8fc8a
Exists in
master
and in
8 other branches
Merge remote-tracking branch 'origin/fix-93' into desenv
Showing
3 changed files
with
58 additions
and
17 deletions
Show diff stats
PENIntegracao.php
rn/ProcessoEletronicoRN.php
| ... | ... | @@ -28,7 +28,8 @@ class ProcessoEletronicoRN extends InfraRN { |
| 28 | 28 | public static $STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE = 6; // Recibo de conclusão do trâmite recebido pelo remetente do processo |
| 29 | 29 | public static $STA_SITUACAO_TRAMITE_CANCELADO = 7; // Trâmite do processo ou documento cancelado pelo usuário (Qualquer situação diferente de 5 e 6) |
| 30 | 30 | public static $STA_SITUACAO_TRAMITE_RECUSADO = 8; // Trâmite do processo recusado pelo destinatário (Situações 2, 3, 4) |
| 31 | - public static $STA_SITUACAO_TRAMITE_CIENCIA_RECUSA = 9; // Remetente ciente da recusa do trâmite | |
| 31 | + public static $STA_SITUACAO_TRAMITE_CIENCIA_RECUSA = 9; // Remetente ciente da recusa do trâmite | |
| 32 | + public static $STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE = 10; | |
| 32 | 33 | |
| 33 | 34 | /* TIPO DE TRÂMITE EXTERNO DE PROCESSO */ |
| 34 | 35 | public static $STA_TIPO_TRAMITE_ENVIO = 'E'; // Trâmite de ENVIO de processo externo |
| ... | ... | @@ -1254,10 +1255,10 @@ class ProcessoEletronicoRN extends InfraRN { |
| 1254 | 1255 | |
| 1255 | 1256 | //@TODOJOIN: Adicionar a seguinte linha abaixo dessa : $parametros->filtroDeConsultaDeTramites = new stdClass() |
| 1256 | 1257 | //Faz a consulta do tramite |
| 1257 | - $paramConsultaTramite = new stdClass(); | |
| 1258 | - $paramConsultaTramite->filtroDeConsultaDeTramites = new stdClass(); | |
| 1259 | - $paramConsultaTramite->filtroDeConsultaDeTramites->IDT = $idTramite; | |
| 1260 | - $dadosTramite = $this->getObjPenWs()->consultarTramites($paramConsultaTramite); | |
| 1258 | + //$paramConsultaTramite = new stdClass(); | |
| 1259 | + //$paramConsultaTramite->filtroDeConsultaDeTramites = new stdClass(); | |
| 1260 | + //$paramConsultaTramite->filtroDeConsultaDeTramites->IDT = $idTramite; | |
| 1261 | + //$dadosTramite = $this->getObjPenWs()->consultarTramites($paramConsultaTramite); | |
| 1261 | 1262 | |
| 1262 | 1263 | //Requisita o cancelamento |
| 1263 | 1264 | $parametros = new stdClass(); | ... | ... |
rn/ReceberProcedimentoRN.php
| ... | ... | @@ -103,12 +103,20 @@ class ReceberProcedimentoRN extends InfraRN |
| 103 | 103 | $arrayHash = array(); |
| 104 | 104 | $arrayHashPendentes = array(); |
| 105 | 105 | |
| 106 | + // Lista todos os componentes digitais presente no protocolo | |
| 107 | + // Esta verificação é necessária pois existem situações em que a lista de componentes digitais | |
| 108 | + // pendentes de recebimento informado pelo PEN não está de acordo com a lista atual de arquivos | |
| 109 | + // mantida pela aplicação. | |
| 110 | + $arrHashComponentesProtocolo = $this->listarHashDosComponentesMetadado($objProcesso); | |
| 111 | + | |
| 106 | 112 | //Percorre os componentes que precisam ser recebidos |
| 107 | - foreach($objTramite->componenteDigitalPendenteDeRecebimento as $key => $componentePendente){ | |
| 113 | + foreach($arrHashComponentesProtocolo as $key => $componentePendente){ | |
| 108 | 114 | |
| 115 | + $numOrdemComponente = $key + 1; | |
| 109 | 116 | if(!is_null($componentePendente)){ |
| 110 | 117 | |
| 111 | - if(!$this->documentoJaRegistrado($strNumeroRegistro, $parNumIdentificacaoTramite, $componentePendente)){ | |
| 118 | + $bolComponenteDigitalRegistrado = $this->documentoJaRegistrado($strNumeroRegistro, $parNumIdentificacaoTramite, $componentePendente); | |
| 119 | + if(!$bolComponenteDigitalRegistrado){ | |
| 112 | 120 | $arrayHashPendentes[] = $componentePendente; |
| 113 | 121 | } |
| 114 | 122 | |
| ... | ... | @@ -116,15 +124,19 @@ class ReceberProcedimentoRN extends InfraRN |
| 116 | 124 | //Ajuste deverá ser feito em versões futuas |
| 117 | 125 | $arrayHash[] = $componentePendente; |
| 118 | 126 | |
| 119 | - //Obter os dados do componente digital | |
| 120 | - $this->gravarLogDebug("Baixando componente digital $key", 6); | |
| 121 | - $objComponenteDigital = $this->objProcessoEletronicoRN->receberComponenteDigital($parNumIdentificacaoTramite, $componentePendente, $objTramite->protocolo); | |
| 122 | - $arrAnexosComponentes[$key][$componentePendente] = $receberComponenteDigitalRN->copiarComponenteDigitalPastaTemporaria($objComponenteDigital); | |
| 123 | - $arrAnexosComponentes[$key]['recebido'] = false; | |
| 124 | - | |
| 125 | - //Valida a integridade do hash | |
| 126 | - $this->gravarLogDebug("Validando integridade de componente digital $key", 6); | |
| 127 | - $receberComponenteDigitalRN->validarIntegridadeDoComponenteDigital($arrAnexosComponentes[$key][$componentePendente], $componentePendente, $parNumIdentificacaoTramite); | |
| 127 | + if(!$bolComponenteDigitalRegistrado) { | |
| 128 | + //Obter os dados do componente digital | |
| 129 | + $this->gravarLogDebug("Baixando componente digital $numOrdemComponente", 6); | |
| 130 | + $objComponenteDigital = $this->objProcessoEletronicoRN->receberComponenteDigital($parNumIdentificacaoTramite, $componentePendente, $objTramite->protocolo); | |
| 131 | + $arrAnexosComponentes[$key][$componentePendente] = $receberComponenteDigitalRN->copiarComponenteDigitalPastaTemporaria($objComponenteDigital); | |
| 132 | + $arrAnexosComponentes[$key]['recebido'] = false; | |
| 133 | + | |
| 134 | + //Valida a integridade do hash | |
| 135 | + $this->gravarLogDebug("Validando integridade de componente digital $numOrdemComponente", 6); | |
| 136 | + $receberComponenteDigitalRN->validarIntegridadeDoComponenteDigital($arrAnexosComponentes[$key][$componentePendente], $componentePendente, $parNumIdentificacaoTramite); | |
| 137 | + } else { | |
| 138 | + $this->gravarLogDebug("Componente digital desconsiderado por já fazer parte do processo", 6); | |
| 139 | + } | |
| 128 | 140 | } |
| 129 | 141 | } |
| 130 | 142 | |
| ... | ... | @@ -234,6 +246,33 @@ class ReceberProcedimentoRN extends InfraRN |
| 234 | 246 | } |
| 235 | 247 | } |
| 236 | 248 | |
| 249 | + /** | |
| 250 | + * Método para recuperar a lista de todos os hashs dos componentes digitais presentes no protocolo recebido | |
| 251 | + * | |
| 252 | + * @return Array Lista de hashs dos componentes digitais | |
| 253 | + */ | |
| 254 | + private function listarHashDosComponentesMetadado($parObjProtocolo) | |
| 255 | + { | |
| 256 | + if(!isset($parObjProtocolo->documento)){ | |
| 257 | + throw new InfraException("Metadados do componente digital do documento de ordem {$objDocumento->ordem} não informado."); | |
| 258 | + } | |
| 259 | + | |
| 260 | + $arrHashsComponentesDigitais = array(); | |
| 261 | + $arrObjDocumento = is_array($parObjProtocolo->documento) ? $parObjProtocolo->documento : array($parObjProtocolo->documento); | |
| 262 | + foreach($arrObjDocumento as $objDocumento){ | |
| 263 | + if(!isset($objDocumento->componenteDigital)){ | |
| 264 | + throw new InfraException("Metadados do componente digital do documento de ordem {$objDocumento->ordem} não informado."); | |
| 265 | + } | |
| 266 | + | |
| 267 | + $arrObjComponentesDigitais = is_array($objDocumento->componenteDigital) ? $objDocumento->componenteDigital : array($objDocumento->componenteDigital); | |
| 268 | + foreach ($arrObjComponentesDigitais as $objComponenteDigital) { | |
| 269 | + $arrHashsComponentesDigitais[] = ProcessoEletronicoRN::getHashFromMetaDados($objComponenteDigital->hash); | |
| 270 | + } | |
| 271 | + } | |
| 272 | + | |
| 273 | + return $arrHashsComponentesDigitais; | |
| 274 | + } | |
| 275 | + | |
| 237 | 276 | public function fecharProcedimentoEmOutraUnidades(ProcedimentoDTO $objProcedimentoDTO, $parObjMetadadosProcedimento){ |
| 238 | 277 | |
| 239 | 278 | $objPenUnidadeDTO = new PenUnidadeDTO(); |
| ... | ... | @@ -421,6 +460,7 @@ class ReceberProcedimentoRN extends InfraRN |
| 421 | 460 | $objComponenteDigitalDTO->setStrNumeroRegistro($parStrNumeroRegistro); |
| 422 | 461 | $objComponenteDigitalDTO->setNumIdTramite($parNumIdentificacaoTramite); |
| 423 | 462 | $objComponenteDigitalDTO->setStrHashConteudo($parStrHashComponenteDigital); |
| 463 | + $objComponenteDigitalDTO->setNumIdAnexo(null, InfraDTO::$OPER_DIFERENTE); | |
| 424 | 464 | |
| 425 | 465 | $objComponenteDigitalBD = new ComponenteDigitalBD($this->getObjInfraIBanco()); |
| 426 | 466 | return $objComponenteDigitalBD->contar($objComponenteDigitalDTO) > 0; | ... | ... |