Commit 88bb8bc860d3cd391d90b9a46f54535016e8fc8a
Exists in
master
and in
7 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; | ... | ... |