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
| @@ -11,7 +11,7 @@ class PENIntegracao extends SeiIntegracao { | @@ -11,7 +11,7 @@ class PENIntegracao extends SeiIntegracao { | ||
| 11 | } | 11 | } |
| 12 | 12 | ||
| 13 | public function getVersao() { | 13 | public function getVersao() { |
| 14 | - return '1.2.0'; | 14 | + return '1.2.2'; |
| 15 | } | 15 | } |
| 16 | 16 | ||
| 17 | public function getInstituicao() { | 17 | public function getInstituicao() { |
rn/ProcessoEletronicoRN.php
| @@ -28,7 +28,8 @@ class ProcessoEletronicoRN extends InfraRN { | @@ -28,7 +28,8 @@ class ProcessoEletronicoRN extends InfraRN { | ||
| 28 | public static $STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE = 6; // Recibo de conclusão do trâmite recebido pelo remetente do processo | 28 | public static $STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE = 6; // Recibo de conclusão do trâmite recebido pelo remetente do processo |
| 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) | 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 | public static $STA_SITUACAO_TRAMITE_RECUSADO = 8; // Trâmite do processo recusado pelo destinatário (Situações 2, 3, 4) | 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 | /* TIPO DE TRÂMITE EXTERNO DE PROCESSO */ | 34 | /* TIPO DE TRÂMITE EXTERNO DE PROCESSO */ |
| 34 | public static $STA_TIPO_TRAMITE_ENVIO = 'E'; // Trâmite de ENVIO de processo externo | 35 | public static $STA_TIPO_TRAMITE_ENVIO = 'E'; // Trâmite de ENVIO de processo externo |
| @@ -1254,10 +1255,10 @@ class ProcessoEletronicoRN extends InfraRN { | @@ -1254,10 +1255,10 @@ class ProcessoEletronicoRN extends InfraRN { | ||
| 1254 | 1255 | ||
| 1255 | //@TODOJOIN: Adicionar a seguinte linha abaixo dessa : $parametros->filtroDeConsultaDeTramites = new stdClass() | 1256 | //@TODOJOIN: Adicionar a seguinte linha abaixo dessa : $parametros->filtroDeConsultaDeTramites = new stdClass() |
| 1256 | //Faz a consulta do tramite | 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 | //Requisita o cancelamento | 1263 | //Requisita o cancelamento |
| 1263 | $parametros = new stdClass(); | 1264 | $parametros = new stdClass(); |
rn/ReceberProcedimentoRN.php
| @@ -103,12 +103,20 @@ class ReceberProcedimentoRN extends InfraRN | @@ -103,12 +103,20 @@ class ReceberProcedimentoRN extends InfraRN | ||
| 103 | $arrayHash = array(); | 103 | $arrayHash = array(); |
| 104 | $arrayHashPendentes = array(); | 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 | //Percorre os componentes que precisam ser recebidos | 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 | if(!is_null($componentePendente)){ | 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 | $arrayHashPendentes[] = $componentePendente; | 120 | $arrayHashPendentes[] = $componentePendente; |
| 113 | } | 121 | } |
| 114 | 122 | ||
| @@ -116,15 +124,19 @@ class ReceberProcedimentoRN extends InfraRN | @@ -116,15 +124,19 @@ class ReceberProcedimentoRN extends InfraRN | ||
| 116 | //Ajuste deverá ser feito em versões futuas | 124 | //Ajuste deverá ser feito em versões futuas |
| 117 | $arrayHash[] = $componentePendente; | 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,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 | public function fecharProcedimentoEmOutraUnidades(ProcedimentoDTO $objProcedimentoDTO, $parObjMetadadosProcedimento){ | 276 | public function fecharProcedimentoEmOutraUnidades(ProcedimentoDTO $objProcedimentoDTO, $parObjMetadadosProcedimento){ |
| 238 | 277 | ||
| 239 | $objPenUnidadeDTO = new PenUnidadeDTO(); | 278 | $objPenUnidadeDTO = new PenUnidadeDTO(); |
| @@ -421,6 +460,7 @@ class ReceberProcedimentoRN extends InfraRN | @@ -421,6 +460,7 @@ class ReceberProcedimentoRN extends InfraRN | ||
| 421 | $objComponenteDigitalDTO->setStrNumeroRegistro($parStrNumeroRegistro); | 460 | $objComponenteDigitalDTO->setStrNumeroRegistro($parStrNumeroRegistro); |
| 422 | $objComponenteDigitalDTO->setNumIdTramite($parNumIdentificacaoTramite); | 461 | $objComponenteDigitalDTO->setNumIdTramite($parNumIdentificacaoTramite); |
| 423 | $objComponenteDigitalDTO->setStrHashConteudo($parStrHashComponenteDigital); | 462 | $objComponenteDigitalDTO->setStrHashConteudo($parStrHashComponenteDigital); |
| 463 | + $objComponenteDigitalDTO->setNumIdAnexo(null, InfraDTO::$OPER_DIFERENTE); | ||
| 424 | 464 | ||
| 425 | $objComponenteDigitalBD = new ComponenteDigitalBD($this->getObjInfraIBanco()); | 465 | $objComponenteDigitalBD = new ComponenteDigitalBD($this->getObjInfraIBanco()); |
| 426 | return $objComponenteDigitalBD->contar($objComponenteDigitalDTO) > 0; | 466 | return $objComponenteDigitalBD->contar($objComponenteDigitalDTO) > 0; |