Commit b7e118b8376d9bc43fefbbbb7747dc375263e123
1 parent
2fc5620f
Exists in
master
and in
13 other branches
[Fixed #93] Erro no envio de recibo durante reprocessamento de status 3
Showing
4 changed files
with
60 additions
and
19 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/ProcessarPendenciasRN.php
@@ -33,9 +33,9 @@ class ProcessarPendenciasRN extends InfraAgendamentoTarefa | @@ -33,9 +33,9 @@ class ProcessarPendenciasRN extends InfraAgendamentoTarefa | ||
33 | ini_set('max_execution_time','0'); | 33 | ini_set('max_execution_time','0'); |
34 | ini_set('memory_limit','-1'); | 34 | ini_set('memory_limit','-1'); |
35 | 35 | ||
36 | - InfraDebug::getInstance()->setBolLigado(false); | 36 | + InfraDebug::getInstance()->setBolLigado(true); |
37 | InfraDebug::getInstance()->setBolDebugInfra(false); | 37 | InfraDebug::getInstance()->setBolDebugInfra(false); |
38 | - InfraDebug::getInstance()->setBolEcho(false); | 38 | + InfraDebug::getInstance()->setBolEcho(true); |
39 | InfraDebug::getInstance()->limpar(); | 39 | InfraDebug::getInstance()->limpar(); |
40 | 40 | ||
41 | PENIntegracao::validarCompatibilidadeModulo(); | 41 | PENIntegracao::validarCompatibilidadeModulo(); |
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; |