Commit 88bb8bc860d3cd391d90b9a46f54535016e8fc8a

Authored by Guilherme Andrade Del Cantoni
2 parents f3d29187 b7e118b8

Merge remote-tracking branch 'origin/fix-93' into desenv

PENIntegracao.php
... ... @@ -11,7 +11,7 @@ class PENIntegracao extends SeiIntegracao {
11 11 }
12 12  
13 13 public function getVersao() {
14   - return '1.2.0';
  14 + return '1.2.2';
15 15 }
16 16  
17 17 public function getInstituicao() {
... ...
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;
... ...