Commit f1cd004f37de163bc3f7500189f87586530e7c56

Authored by Guilherme Andrade Del Cantoni
1 parent 7d9fa19d

Ajuste parcial para adaptação do recebimento de processos no SEI 3.1

rn/ProcessarPendenciasRN.php
@@ -114,7 +114,8 @@ class ProcessarPendenciasRN extends InfraAgendamentoTarefa @@ -114,7 +114,8 @@ class ProcessarPendenciasRN extends InfraAgendamentoTarefa
114 LogSEI::getInstance()->gravar(InfraException::inspecionar($e)); 114 LogSEI::getInstance()->gravar(InfraException::inspecionar($e));
115 115
116 //Não recusa trâmite caso o processo atual não possa ser desbloqueado, evitando que o processo fique aberto em dois sistemas ao mesmo tempo 116 //Não recusa trâmite caso o processo atual não possa ser desbloqueado, evitando que o processo fique aberto em dois sistemas ao mesmo tempo
117 - if($e instanceof InfraException && $e->getObjException() != null && !($e->getObjException() instanceof ProcessoNaoPodeSerDesbloqueadoException)) { 117 + $bolDeveRecusarTramite = !($e instanceof InfraException && $e->getObjException() != null && $e->getObjException() instanceof ProcessoNaoPodeSerDesbloqueadoException);
  118 + if($bolDeveRecusarTramite) {
118 $objProcessoEletronicoRN = new ProcessoEletronicoRN(); 119 $objProcessoEletronicoRN = new ProcessoEletronicoRN();
119 $strMensagem = ($e instanceof InfraException) ? $e->__toString() : $e->getMessage(); 120 $strMensagem = ($e instanceof InfraException) ? $e->__toString() : $e->getMessage();
120 $objProcessoEletronicoRN->recusarTramite($numIdentificacaoTramite, $strMensagem, ProcessoEletronicoRN::MTV_RCSR_TRAM_CD_OUTROU); 121 $objProcessoEletronicoRN->recusarTramite($numIdentificacaoTramite, $strMensagem, ProcessoEletronicoRN::MTV_RCSR_TRAM_CD_OUTROU);
rn/ProcessoEletronicoRN.php
@@ -1435,6 +1435,33 @@ class ProcessoEletronicoRN extends InfraRN { @@ -1435,6 +1435,33 @@ class ProcessoEletronicoRN extends InfraRN {
1435 throw new ProcessoNaoPodeSerDesbloqueadoException("Erro ao desbloquear processo", 1, $e); 1435 throw new ProcessoNaoPodeSerDesbloqueadoException("Erro ao desbloquear processo", 1, $e);
1436 } 1436 }
1437 } 1437 }
  1438 +
  1439 + /**
  1440 + * Busca a unidade ao qual o processo foi anteriormente expedido.
  1441 + * Caso seja o primeiro trâmite, considera a unidade atual
  1442 + *
  1443 + * @return integer Id da unidade
  1444 + */
  1445 + public static function obterUnidadeParaRegistroDocumento($parDblIdProcedimento)
  1446 + {
  1447 + $objAtividadeDTO = new AtividadeDTO();
  1448 + $objAtividadeDTO->setStrIdTarefaModuloTarefa(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO);
  1449 + $objAtividadeDTO->setDblIdProcedimentoProtocolo($parDblIdProcedimento);
  1450 + $objAtividadeDTO->setOrd('Conclusao', InfraDTO::$TIPO_ORDENACAO_DESC);
  1451 + $objAtividadeDTO->setNumMaxRegistrosRetorno(1);
  1452 + $objAtividadeDTO->retNumIdUnidade();
  1453 +
  1454 + $objAtividadeRN = new AtividadeRN();
  1455 + $arrObjAtividadeDTO = $objAtividadeRN->listarRN0036($objAtividadeDTO);
  1456 + $numIdUnidade = SessaoSEI::getInstance()->getNumIdUnidadeAtual();
  1457 +
  1458 + //if(!empty($arrObjAtividadeDTO)){
  1459 + // $objAtividadeDTO = $arrObjAtividadeDTO[0];
  1460 + // $numIdUnidade = $objAtividadeDTO->getNumIdUnidade();
  1461 + //}
  1462 +
  1463 + return $numIdUnidade;
  1464 + }
1438 } 1465 }
1439 1466
1440 1467
rn/ReceberComponenteDigitalRN.php
@@ -142,15 +142,8 @@ class ReceberComponenteDigitalRN extends InfraRN @@ -142,15 +142,8 @@ class ReceberComponenteDigitalRN extends InfraRN
142 142
143 $objDocumentoDTO->setObjProtocoloDTO($objProtocoloDTO); 143 $objDocumentoDTO->setObjProtocoloDTO($objProtocoloDTO);
144 $objProtocoloDTO->setArrObjAnexoDTO(array($parObjAnexoDTO)); 144 $objProtocoloDTO->setArrObjAnexoDTO(array($parObjAnexoDTO));
145 - $objDocumentoDTO = $objDocumentoRN->alterarRN0004($objDocumentoDTO);  
146 -  
147 - // @join_tec US029 (#3790)  
148 - /*$objObservacaoDTO = new ObservacaoDTO();  
149 - $objObservacaoDTO->setDblIdProtocolo($objProtocoloDTO->getDblIdProtocolo());  
150 - $objObservacaoDTO->setStrDescricao(sprintf('Número SEI do Documento na Origem: %s', $strProtocoloFormatado));  
151 - $objObservacaoDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());  
152 145
153 - $objObservacaoBD = new ObservacaoRN();  
154 - $objObservacaoBD->cadastrarRN0222($objObservacaoDTO);*/ 146 + $objDocumentoDTO->setStrSinBloqueado('S');
  147 + $objDocumentoDTO = $objDocumentoRN->alterarRN0004($objDocumentoDTO);
155 } 148 }
156 } 149 }
rn/ReceberProcedimentoRN.php
@@ -17,6 +17,7 @@ class ReceberProcedimentoRN extends InfraRN @@ -17,6 +17,7 @@ class ReceberProcedimentoRN extends InfraRN
17 $this->objInfraParametro = new InfraParametro(BancoSEI::getInstance()); 17 $this->objInfraParametro = new InfraParametro(BancoSEI::getInstance());
18 $this->objProcessoEletronicoRN = new ProcessoEletronicoRN(); 18 $this->objProcessoEletronicoRN = new ProcessoEletronicoRN();
19 $this->objProcedimentoAndamentoRN = new ProcedimentoAndamentoRN(); 19 $this->objProcedimentoAndamentoRN = new ProcedimentoAndamentoRN();
  20 + $this->objReceberComponenteDigitalRN = new ReceberComponenteDigitalRN();
20 } 21 }
21 22
22 protected function inicializarObjInfraIBanco() 23 protected function inicializarObjInfraIBanco()
@@ -91,8 +92,6 @@ class ReceberProcedimentoRN extends InfraRN @@ -91,8 +92,6 @@ class ReceberProcedimentoRN extends InfraRN
91 $this->verificarPermissoesDiretorios($parNumIdentificacaoTramite); 92 $this->verificarPermissoesDiretorios($parNumIdentificacaoTramite);
92 93
93 $this->gravarLogDebug("Obtendo metadados dos componentes digitais do processo", 4); 94 $this->gravarLogDebug("Obtendo metadados dos componentes digitais do processo", 4);
94 - $arrStrNomeDocumento = $this->listarMetaDadosComponentesDigitais($objProcesso);  
95 - $receberComponenteDigitalRN = new ReceberComponenteDigitalRN();  
96 $arrAnexosComponentes = array(); 95 $arrAnexosComponentes = array();
97 $arrayHash = array(); 96 $arrayHash = array();
98 $arrayHashPendentes = array(); 97 $arrayHashPendentes = array();
@@ -127,12 +126,12 @@ class ReceberProcedimentoRN extends InfraRN @@ -127,12 +126,12 @@ class ReceberProcedimentoRN extends InfraRN
127 //Obter os dados do componente digital 126 //Obter os dados do componente digital
128 $this->gravarLogDebug("Baixando componente digital $numOrdemComponente", 6); 127 $this->gravarLogDebug("Baixando componente digital $numOrdemComponente", 6);
129 $objComponenteDigital = $this->objProcessoEletronicoRN->receberComponenteDigital($parNumIdentificacaoTramite, $componentePendente, $objTramite->protocolo); 128 $objComponenteDigital = $this->objProcessoEletronicoRN->receberComponenteDigital($parNumIdentificacaoTramite, $componentePendente, $objTramite->protocolo);
130 - $arrAnexosComponentes[$key][$componentePendente] = $receberComponenteDigitalRN->copiarComponenteDigitalPastaTemporaria($objComponenteDigital); 129 + $arrAnexosComponentes[$key][$componentePendente] = $this->objReceberComponenteDigitalRN->copiarComponenteDigitalPastaTemporaria($objComponenteDigital);
131 $arrAnexosComponentes[$key]['recebido'] = false; 130 $arrAnexosComponentes[$key]['recebido'] = false;
132 131
133 //Valida a integridade do hash 132 //Valida a integridade do hash
134 $this->gravarLogDebug("Validando integridade de componente digital $numOrdemComponente", 6); 133 $this->gravarLogDebug("Validando integridade de componente digital $numOrdemComponente", 6);
135 - $receberComponenteDigitalRN->validarIntegridadeDoComponenteDigital($arrAnexosComponentes[$key][$componentePendente], $componentePendente, $parNumIdentificacaoTramite); 134 + $this->objReceberComponenteDigitalRN->validarIntegridadeDoComponenteDigital($arrAnexosComponentes[$key][$componentePendente], $componentePendente, $parNumIdentificacaoTramite);
136 } else { 135 } else {
137 $this->gravarLogDebug("Componente digital $numOrdemComponente desconsiderado por já fazer parte do processo", 6); 136 $this->gravarLogDebug("Componente digital $numOrdemComponente desconsiderado por já fazer parte do processo", 6);
138 } 137 }
@@ -140,7 +139,7 @@ class ReceberProcedimentoRN extends InfraRN @@ -140,7 +139,7 @@ class ReceberProcedimentoRN extends InfraRN
140 } 139 }
141 140
142 if(count($arrAnexosComponentes) > 0){ 141 if(count($arrAnexosComponentes) > 0){
143 - $receberComponenteDigitalRN->setArrAnexos($arrAnexosComponentes); 142 + $this->objReceberComponenteDigitalRN->setArrAnexos($arrAnexosComponentes);
144 } 143 }
145 144
146 #############################TERMINA O RECEBIMENTO DOS COMPONENTES DIGITAIS US010################################################ 145 #############################TERMINA O RECEBIMENTO DOS COMPONENTES DIGITAIS US010################################################
@@ -155,7 +154,13 @@ class ReceberProcedimentoRN extends InfraRN @@ -155,7 +154,13 @@ class ReceberProcedimentoRN extends InfraRN
155 } 154 }
156 155
157 $this->gravarLogDebug("Persistindo/atualizando dados do processo com NRE " . $strNumeroRegistro, 4); 156 $this->gravarLogDebug("Persistindo/atualizando dados do processo com NRE " . $strNumeroRegistro, 4);
158 - $objProcedimentoDTO = $this->registrarProcesso($strNumeroRegistro, $parNumIdentificacaoTramite, $objProcesso, $objMetadadosProcedimento); 157 + $objProcedimentoDTO = $this->registrarProcesso(
  158 + $strNumeroRegistro,
  159 + $parNumIdentificacaoTramite,
  160 + $objProcesso,
  161 + $objMetadadosProcedimento,
  162 + $arrayHash,
  163 + $arrayHashPendentes);
159 164
160 // @join_tec US008.08 (#23092) 165 // @join_tec US008.08 (#23092)
161 $this->objProcedimentoAndamentoRN->setOpts($strNumeroRegistro, $parNumIdentificacaoTramite, ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO), $objProcedimentoDTO->getDblIdProcedimento()); 166 $this->objProcedimentoAndamentoRN->setOpts($strNumeroRegistro, $parNumIdentificacaoTramite, ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO), $objProcedimentoDTO->getDblIdProcedimento());
@@ -185,70 +190,20 @@ class ReceberProcedimentoRN extends InfraRN @@ -185,70 +190,20 @@ class ReceberProcedimentoRN extends InfraRN
185 throw new InfraException("Desconsiderando recebimento do processo devido a situação de trâmite inconsistente: " . $objTramite->situacaoAtual); 190 throw new InfraException("Desconsiderando recebimento do processo devido a situação de trâmite inconsistente: " . $objTramite->situacaoAtual);
186 } 191 }
187 192
188 -//return ;  
189 -  
190 - if(count($arrayHashPendentes) > 0){  
191 - //Obter dados dos componetes digitais  
192 - $this->gravarLogDebug("Iniciando o recebimento dos componentes digitais pendentes", 4);  
193 - $objComponenteDigitalDTO = new ComponenteDigitalDTO();  
194 - $objComponenteDigitalDTO->setStrNumeroRegistro($strNumeroRegistro);  
195 - $objComponenteDigitalDTO->setNumIdTramite($parNumIdentificacaoTramite);  
196 - $objComponenteDigitalDTO->setStrHashConteudo($arrayHash, InfraDTO::$OPER_IN);  
197 - $objComponenteDigitalDTO->setOrdNumOrdem(InfraDTO::$TIPO_ORDENACAO_ASC);  
198 - $objComponenteDigitalDTO->retDblIdDocumento();  
199 - $objComponenteDigitalDTO->retNumTicketEnvioComponentes();  
200 - $objComponenteDigitalDTO->retStrProtocoloDocumentoFormatado();  
201 - $objComponenteDigitalDTO->retStrHashConteudo();  
202 - $objComponenteDigitalDTO->retStrProtocolo();  
203 - $objComponenteDigitalDTO->retStrNumeroRegistro();  
204 - $objComponenteDigitalDTO->retNumIdTramite();  
205 - $objComponenteDigitalDTO->retStrNome();  
206 - $objComponenteDigitalDTO->retStrStaEstadoProtocolo();  
207 -  
208 - $objComponenteDigitalBD = new ComponenteDigitalBD($this->getObjInfraIBanco());  
209 - $arrObjComponentesDigitaisDTO = $objComponenteDigitalBD->listar($objComponenteDigitalDTO);  
210 -  
211 - if ($objComponenteDigitalBD->contar($objComponenteDigitalDTO) > 0) {  
212 - $objReceberComponenteDigitalRN = $receberComponenteDigitalRN;  
213 -  
214 - //Esta unidade deverá ser considerada para posterior desbloqueio do processo e reabertura  
215 - $numIdUnidade = $this->obterUnidadeParaRegistroDocumento($objProcedimentoDTO->getDblIdProcedimento());  
216 - SessaoSEI::getInstance()->setNumIdUnidadeAtual($numIdUnidade);  
217 -  
218 - try{  
219 - foreach($arrObjComponentesDigitaisDTO as $objComponenteDigitalDTOEnviado) {  
220 - if($objComponenteDigitalDTOEnviado->getStrStaEstadoProtocolo() != ProtocoloRN::$TE_DOCUMENTO_CANCELADO){  
221 - $strHash = $objComponenteDigitalDTOEnviado->getStrHashConteudo();  
222 - $strNomeDocumento = (array_key_exists($strHash, $arrStrNomeDocumento)) ? $arrStrNomeDocumento[$strHash]['especieNome'] : '[Desconhecido]';  
223 - $objReceberComponenteDigitalRN->receberComponenteDigital($objComponenteDigitalDTOEnviado);  
224 -  
225 - $strMensagemRecebimento = sprintf('Recebendo %s %s', $strNomeDocumento, $objComponenteDigitalDTOEnviado->getStrProtocoloDocumentoFormatado());  
226 - $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento($strMensagemRecebimento, 'S'));  
227 - $this->gravarLogDebug($strMensagemRecebimento, 6);  
228 - }  
229 - }  
230 - } finally {  
231 - $objPenParametroRN = new PenParametroRN();  
232 - $numUnidadeReceptora = $objPenParametroRN->getParametro('PEN_UNIDADE_GERADORA_DOCUMENTO_RECEBIDO');  
233 - SessaoSEI::getInstance()->setNumIdUnidadeAtual($numUnidadeReceptora);  
234 - }  
235 -  
236 - // @join_tec US008.10 (#23092)  
237 - $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Todos os componentes digitais foram recebidos', 'S'));  
238 - }else{  
239 - $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Nenhum componente digital para receber', 'S'));  
240 - }  
241 - }  
242 - } 193 + //Atribui componentes digitais baixados anteriormente aos documentos do processo
  194 + $this->atribuirComponentesDigitaisAosDocumentos($objProcedimentoDTO, $strNumeroRegistro, $parNumIdentificacaoTramite, $arrayHash, $arrayHashPendentes);
243 195
244 - $this->gravarLogDebug("Enviando recibo de conclusão do trâmite $parNumIdentificacaoTramite", 6);  
245 - $objEnviarReciboTramiteRN = new EnviarReciboTramiteRN();  
246 - $objEnviarReciboTramiteRN->enviarReciboTramiteProcesso($parNumIdentificacaoTramite, $arrayHash); 196 + //Finalizar o envio do documento para a respectiva unidade
  197 + $this->enviarProcedimentoUnidade($objProcedimentoDTO);
247 198
248 - $this->gravarLogDebug("Registrando a conclusão do recebimento do trâmite $parNumIdentificacaoTramite", 6);  
249 - $objPenTramiteProcessadoRN = new PenTramiteProcessadoRN(PenTramiteProcessadoRN::STR_TIPO_PROCESSO);  
250 - $objPenTramiteProcessadoRN->setRecebido($parNumIdentificacaoTramite); 199 + $this->gravarLogDebug("Enviando recibo de conclusão do trâmite $parNumIdentificacaoTramite", 6);
  200 + $objEnviarReciboTramiteRN = new EnviarReciboTramiteRN();
  201 + $objEnviarReciboTramiteRN->enviarReciboTramiteProcesso($parNumIdentificacaoTramite, $arrayHash);
251 202
  203 + $this->gravarLogDebug("Registrando a conclusão do recebimento do trâmite $parNumIdentificacaoTramite", 6);
  204 + $objPenTramiteProcessadoRN = new PenTramiteProcessadoRN(PenTramiteProcessadoRN::STR_TIPO_PROCESSO);
  205 + $objPenTramiteProcessadoRN->setRecebido($parNumIdentificacaoTramite);
  206 + }
252 } catch (Exception $e) { 207 } catch (Exception $e) {
253 $mensagemErro = InfraException::inspecionar($e); 208 $mensagemErro = InfraException::inspecionar($e);
254 $this->gravarLogDebug($mensagemErro); 209 $this->gravarLogDebug($mensagemErro);
@@ -258,6 +213,71 @@ class ReceberProcedimentoRN extends InfraRN @@ -258,6 +213,71 @@ class ReceberProcedimentoRN extends InfraRN
258 } 213 }
259 214
260 /** 215 /**
  216 + * Método responsável por atribuir a lista de componentes digitais baixados do PEN aos seus respectivos documentos no SEI
  217 + *
  218 + * @param ProcedimentoDTO $parObjProcedimentoDTO Protocolo que está sendo recebido pelo SEI
  219 + * @param Array $parArrHashComponentesPendentes Lista de componentes pendentes para vinculação aos documentos
  220 + * @return [type] [description]
  221 + */
  222 + private function atribuirComponentesDigitaisAosDocumentos(ProcedimentoDTO $parObjProcedimentoDTO, $parStrNumeroRegistro, $parNumIdentificacaoTramite,
  223 + $parArrHashComponentes, $parArrHashComponentesPendentes)
  224 + {
  225 + if(count($parArrHashComponentesPendentes) > 0){
  226 + //Obter dados dos componetes digitais
  227 + $this->gravarLogDebug("Iniciando o recebimento dos componentes digitais pendentes", 4);
  228 + $objComponenteDigitalDTO = new ComponenteDigitalDTO();
  229 + $objComponenteDigitalDTO->setStrNumeroRegistro($parStrNumeroRegistro);
  230 + $objComponenteDigitalDTO->setNumIdTramite($parNumIdentificacaoTramite);
  231 + $objComponenteDigitalDTO->setStrHashConteudo($parArrHashComponentes, InfraDTO::$OPER_IN);
  232 + $objComponenteDigitalDTO->setOrdNumOrdem(InfraDTO::$TIPO_ORDENACAO_ASC);
  233 + $objComponenteDigitalDTO->retDblIdDocumento();
  234 + $objComponenteDigitalDTO->retNumTicketEnvioComponentes();
  235 + $objComponenteDigitalDTO->retStrProtocoloDocumentoFormatado();
  236 + $objComponenteDigitalDTO->retStrHashConteudo();
  237 + $objComponenteDigitalDTO->retStrProtocolo();
  238 + $objComponenteDigitalDTO->retStrNumeroRegistro();
  239 + $objComponenteDigitalDTO->retNumIdTramite();
  240 + $objComponenteDigitalDTO->retStrNome();
  241 + $objComponenteDigitalDTO->retStrStaEstadoProtocolo();
  242 +
  243 + $objComponenteDigitalBD = new ComponenteDigitalBD($this->getObjInfraIBanco());
  244 + $arrObjComponentesDigitaisDTO = $objComponenteDigitalBD->listar($objComponenteDigitalDTO);
  245 +
  246 + if ($objComponenteDigitalBD->contar($objComponenteDigitalDTO) > 0) {
  247 + //Esta unidade deverá ser considerada para posterior desbloqueio do processo e reabertura
  248 + $numIdUnidade = ProcessoEletronicoRN::obterUnidadeParaRegistroDocumento($parObjProcedimentoDTO->getDblIdProcedimento());
  249 + SessaoSEI::getInstance()->setNumIdUnidadeAtual($numIdUnidade);
  250 +
  251 + try{
  252 + $arrStrNomeDocumento = $this->listarMetaDadosComponentesDigitais($objProcesso);
  253 + foreach($arrObjComponentesDigitaisDTO as $objComponenteDigitalDTOEnviado) {
  254 + if($objComponenteDigitalDTOEnviado->getStrStaEstadoProtocolo() != ProtocoloRN::$TE_DOCUMENTO_CANCELADO){
  255 + $strHash = $objComponenteDigitalDTOEnviado->getStrHashConteudo();
  256 + $strNomeDocumento = array_key_exists($strHash, $arrStrNomeDocumento) ? $arrStrNomeDocumento[$strHash]['especieNome'] : '[Desconhecido]';
  257 +
  258 + //Todo: Parei aqui: Verificar se documento já foi recebido anteriormente para poder registrar
  259 + //Alterar somente de documentos não bloqueados
  260 + $this->objReceberComponenteDigitalRN->receberComponenteDigital($objComponenteDigitalDTOEnviado);
  261 + $strMensagemRecebimento = sprintf('Recebendo %s %s', $strNomeDocumento, $objComponenteDigitalDTOEnviado->getStrProtocoloDocumentoFormatado());
  262 + $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento($strMensagemRecebimento, 'S'));
  263 + $this->gravarLogDebug($strMensagemRecebimento, 6);
  264 + }
  265 + }
  266 + } finally {
  267 + $objPenParametroRN = new PenParametroRN();
  268 + $numUnidadeReceptora = $objPenParametroRN->getParametro('PEN_UNIDADE_GERADORA_DOCUMENTO_RECEBIDO');
  269 + SessaoSEI::getInstance()->setNumIdUnidadeAtual($numUnidadeReceptora);
  270 + }
  271 +
  272 + // @join_tec US008.10 (#23092)
  273 + $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Todos os componentes digitais foram recebidos', 'S'));
  274 + }else{
  275 + $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Nenhum componente digital para receber', 'S'));
  276 + }
  277 + }
  278 + }
  279 +
  280 + /**
261 * Método para recuperar a lista de todos os hashs dos componentes digitais presentes no protocolo recebido 281 * Método para recuperar a lista de todos os hashs dos componentes digitais presentes no protocolo recebido
262 * 282 *
263 * @return Array Lista de hashs dos componentes digitais 283 * @return Array Lista de hashs dos componentes digitais
@@ -418,7 +438,8 @@ class ReceberProcedimentoRN extends InfraRN @@ -418,7 +438,8 @@ class ReceberProcedimentoRN extends InfraRN
418 } 438 }
419 439
420 440
421 - private function registrarProcesso($parStrNumeroRegistro, $parNumIdentificacaoTramite, $parObjProcesso, $parObjMetadadosProcedimento) 441 + private function registrarProcesso($parStrNumeroRegistro, $parNumIdentificacaoTramite, $parObjProcesso, $parObjMetadadosProcedimento,
  442 + $parArrHashComponentes, $parArrHashComponentesPendentes)
422 { 443 {
423 // Validação dos dados do processo recebido 444 // Validação dos dados do processo recebido
424 $objInfraException = new InfraException(); 445 $objInfraException = new InfraException();
@@ -434,10 +455,10 @@ class ReceberProcedimentoRN extends InfraRN @@ -434,10 +455,10 @@ class ReceberProcedimentoRN extends InfraRN
434 $dblIdProcedimento = $this->consultarProcedimentoExistente($parStrNumeroRegistro, $parObjProcesso->protocolo); 455 $dblIdProcedimento = $this->consultarProcedimentoExistente($parStrNumeroRegistro, $parObjProcesso->protocolo);
435 456
436 if(isset($dblIdProcedimento)){ 457 if(isset($dblIdProcedimento)){
437 - $objProcedimentoDTO = $this->atualizarProcedimento($dblIdProcedimento, $parObjMetadadosProcedimento, $parObjProcesso); 458 + $objProcedimentoDTO = $this->atualizarProcedimento($dblIdProcedimento, $parObjMetadadosProcedimento, $parObjProcesso, $parNumIdentificacaoTramite, $parArrHashComponentes, $parArrHashComponentesPendentes);
438 } 459 }
439 else { 460 else {
440 - $objProcedimentoDTO = $this->gerarProcedimento($parObjMetadadosProcedimento, $parObjProcesso); 461 + $objProcedimentoDTO = $this->gerarProcedimento($parObjMetadadosProcedimento, $parObjProcesso, $parNumIdentificacaoTramite, $parArrHashComponentes, $parArrHashComponentesPendentes);
441 } 462 }
442 463
443 //TODO: Fazer o envio de cada um dos procedimentos apensados (Processo principal e seus apensados, caso exista) 464 //TODO: Fazer o envio de cada um dos procedimentos apensados (Processo principal e seus apensados, caso exista)
@@ -499,7 +520,7 @@ class ReceberProcedimentoRN extends InfraRN @@ -499,7 +520,7 @@ class ReceberProcedimentoRN extends InfraRN
499 return $dblIdProcedimento; 520 return $dblIdProcedimento;
500 } 521 }
501 522
502 - private function atualizarProcedimento($parDblIdProcedimento, $objMetadadosProcedimento, $objProcesso) 523 + private function atualizarProcedimento($parDblIdProcedimento, $objMetadadosProcedimento, $objProcesso, $parNumIdTramite, $parArrHashComponentes, $parArrHashComponentesPendentes)
503 { 524 {
504 if(!isset($parDblIdProcedimento)){ 525 if(!isset($parDblIdProcedimento)){
505 throw new InfraException('Parâmetro $parDblIdProcedimento não informado.'); 526 throw new InfraException('Parâmetro $parDblIdProcedimento não informado.');
@@ -518,7 +539,7 @@ class ReceberProcedimentoRN extends InfraRN @@ -518,7 +539,7 @@ class ReceberProcedimentoRN extends InfraRN
518 539
519 //Busca a unidade em ao qual o processo foi anteriormente expedido 540 //Busca a unidade em ao qual o processo foi anteriormente expedido
520 //Esta unidade deverá ser considerada para posterior desbloqueio do processo e reabertura 541 //Esta unidade deverá ser considerada para posterior desbloqueio do processo e reabertura
521 - $numIdUnidade = $this->obterUnidadeParaRegistroDocumento($parDblIdProcedimento); 542 + $numIdUnidade = ProcessoEletronicoRN::obterUnidadeParaRegistroDocumento($parDblIdProcedimento);
522 SessaoSEI::getInstance()->setNumIdUnidadeAtual($numIdUnidade); 543 SessaoSEI::getInstance()->setNumIdUnidadeAtual($numIdUnidade);
523 544
524 try { 545 try {
@@ -565,6 +586,7 @@ class ReceberProcedimentoRN extends InfraRN @@ -565,6 +586,7 @@ class ReceberProcedimentoRN extends InfraRN
565 $objUnidadeDTO = $this->atribuirDadosUnidade($objProcedimentoDTO, $objDestinatario); 586 $objUnidadeDTO = $this->atribuirDadosUnidade($objProcedimentoDTO, $objDestinatario);
566 587
567 $this->atribuirDocumentos($objProcedimentoDTO, $objProcesso, $objUnidadeDTO, $objMetadadosProcedimento); 588 $this->atribuirDocumentos($objProcedimentoDTO, $objProcesso, $objUnidadeDTO, $objMetadadosProcedimento);
  589 +
568 $this->registrarProcedimentoNaoVisualizado($objProcedimentoDTO); 590 $this->registrarProcedimentoNaoVisualizado($objProcedimentoDTO);
569 591
570 //TODO: Avaliar necessidade de restringir referência circular entre processos 592 //TODO: Avaliar necessidade de restringir referência circular entre processos
@@ -576,7 +598,7 @@ class ReceberProcedimentoRN extends InfraRN @@ -576,7 +598,7 @@ class ReceberProcedimentoRN extends InfraRN
576 $this->alterarMetadadosProcedimento($objProcedimentoDTO->getDblIdProcedimento(), $objProcesso); 598 $this->alterarMetadadosProcedimento($objProcedimentoDTO->getDblIdProcedimento(), $objProcesso);
577 599
578 //Finaliza o envio do documento para a respectiva unidade 600 //Finaliza o envio do documento para a respectiva unidade
579 - $this->enviarProcedimentoUnidade($objProcedimentoDTO, true); 601 + //$this->enviarProcedimentoUnidade($objProcedimentoDTO, true);
580 602
581 return $objProcedimentoDTO; 603 return $objProcedimentoDTO;
582 604
@@ -588,32 +610,7 @@ class ReceberProcedimentoRN extends InfraRN @@ -588,32 +610,7 @@ class ReceberProcedimentoRN extends InfraRN
588 } 610 }
589 611
590 612
591 - /**  
592 - * Busca a unidade ao qual o processo foi anteriormente expedido.  
593 - * Caso seja o primeiro trâmite, considera a unidade atual  
594 - *  
595 - * @return integer Id da unidade  
596 - */  
597 - private function obterUnidadeParaRegistroDocumento($parDblIdProcedimento)  
598 - {  
599 - $objAtividadeDTO = new AtividadeDTO();  
600 - $objAtividadeDTO->setStrIdTarefaModuloTarefa(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO);  
601 - $objAtividadeDTO->setDblIdProcedimentoProtocolo($parDblIdProcedimento);  
602 - $objAtividadeDTO->setOrd('Conclusao', InfraDTO::$TIPO_ORDENACAO_DESC);  
603 - $objAtividadeDTO->setNumMaxRegistrosRetorno(1);  
604 - $objAtividadeDTO->retNumIdUnidade();  
605 -  
606 - $objAtividadeRN = new AtividadeRN();  
607 - $arrObjAtividadeDTO = $objAtividadeRN->listarRN0036($objAtividadeDTO);  
608 - $numIdUnidade = SessaoSEI::getInstance()->getNumIdUnidadeAtual();  
609 613
610 - if(!empty($arrObjAtividadeDTO)){  
611 - $objAtividadeDTO = $arrObjAtividadeDTO[0];  
612 - $numIdUnidade = $objAtividadeDTO->getNumIdUnidade();  
613 - }  
614 -  
615 - return $numIdUnidade;  
616 - }  
617 614
618 private function gerarAndamentoUnidadeReceptora($parNumIdProcedimento) 615 private function gerarAndamentoUnidadeReceptora($parNumIdProcedimento)
619 { 616 {
@@ -646,7 +643,7 @@ class ReceberProcedimentoRN extends InfraRN @@ -646,7 +643,7 @@ class ReceberProcedimentoRN extends InfraRN
646 $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO); 643 $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO);
647 } 644 }
648 645
649 - private function gerarProcedimento($objMetadadosProcedimento, $objProcesso) 646 + private function gerarProcedimento($objMetadadosProcedimento, $objProcesso, $parNumIdTramite, $parArrHashComponentes, $parArrHashComponentesPendentes)
650 { 647 {
651 if(!isset($objMetadadosProcedimento)){ 648 if(!isset($objMetadadosProcedimento)){
652 throw new InfraException('Parâmetro $objMetadadosProcedimento não informado.'); 649 throw new InfraException('Parâmetro $objMetadadosProcedimento não informado.');
@@ -769,14 +766,15 @@ class ReceberProcedimentoRN extends InfraRN @@ -769,14 +766,15 @@ class ReceberProcedimentoRN extends InfraRN
769 766
770 $this->registrarAndamentoRecebimentoProcesso($objProcedimentoDTO, $objMetadadosProcedimento); 767 $this->registrarAndamentoRecebimentoProcesso($objProcedimentoDTO, $objMetadadosProcedimento);
771 $this->atribuirDocumentos($objProcedimentoDTO, $objProcesso, $objUnidadeDTO, $objMetadadosProcedimento); 768 $this->atribuirDocumentos($objProcedimentoDTO, $objProcesso, $objUnidadeDTO, $objMetadadosProcedimento);
  769 +
772 $this->registrarProcedimentoNaoVisualizado($objProcedimentoDTOGerado); 770 $this->registrarProcedimentoNaoVisualizado($objProcedimentoDTOGerado);
773 771
774 //TODO: Avaliar necessidade de restringir referência circular entre processos 772 //TODO: Avaliar necessidade de restringir referência circular entre processos
775 //TODO: Registrar que o processo foi recebido com outros apensados. Necessário para posterior reenvio 773 //TODO: Registrar que o processo foi recebido com outros apensados. Necessário para posterior reenvio
776 $this->atribuirProcessosApensados($objProcedimentoDTO, $objProcesso->processoApensado); 774 $this->atribuirProcessosApensados($objProcedimentoDTO, $objProcesso->processoApensado);
777 775
778 - //TODO: Finalizar o envio do documento para a respectiva unidade  
779 - $this->enviarProcedimentoUnidade($objProcedimentoDTO); 776 + //Finalizar o envio do documento para a respectiva unidade
  777 + //$this->enviarProcedimentoUnidade($objProcedimentoDTO);
780 778
781 //$this->removerAndamentosProcedimento($objProcedimentoDTO); 779 //$this->removerAndamentosProcedimento($objProcedimentoDTO);
782 return $objProcedimentoDTO; 780 return $objProcedimentoDTO;
@@ -793,11 +791,22 @@ class ReceberProcedimentoRN extends InfraRN @@ -793,11 +791,22 @@ class ReceberProcedimentoRN extends InfraRN
793 $objProtocoloDTO->setNumIdHipoteseLegal($this->obterHipoteseLegalSEI($parObjMetadadoProcedimento->hipoteseLegal->identificacao)); 791 $objProtocoloDTO->setNumIdHipoteseLegal($this->obterHipoteseLegalSEI($parObjMetadadoProcedimento->hipoteseLegal->identificacao));
794 } 792 }
795 793
796 - $objProtocoloRN = new ProtocoloRN();  
797 - $objProtocoloRN->alterarRN0203($objProtocoloDTO); 794 + //Esta unidade deverá ser considerada para posterior desbloqueio do processo e reabertura
  795 + $numIdUnidade = ProcessoEletronicoRN::obterUnidadeParaRegistroDocumento($parNumIdProcedimento);
  796 + SessaoSEI::getInstance()->setNumIdUnidadeAtual($numIdUnidade);
  797 +
  798 + try{
  799 + $objProtocoloRN = new ProtocoloRN();
  800 + $objProtocoloRN->alterarRN0203($objProtocoloDTO);
  801 + } finally {
  802 + $objPenParametroRN = new PenParametroRN();
  803 + $numUnidadeReceptora = $objPenParametroRN->getParametro('PEN_UNIDADE_GERADORA_DOCUMENTO_RECEBIDO');
  804 + SessaoSEI::getInstance()->setNumIdUnidadeAtual($numUnidadeReceptora);
  805 + }
798 } 806 }
799 807
800 - private function alterarMetadadosDocumento($parNumIdDocumento, $parObjMetadadoDocumento){ 808 + private function alterarMetadadosDocumento($parNumIdProcedimento, $parNumIdDocumento, $parObjMetadadoDocumento)
  809 + {
801 //Realiza a alteração dos metadados do documento(Por hora, apenas do nível de sigilo e hipótese legal) 810 //Realiza a alteração dos metadados do documento(Por hora, apenas do nível de sigilo e hipótese legal)
802 $objProtocoloDTO = new ProtocoloDTO(); 811 $objProtocoloDTO = new ProtocoloDTO();
803 $objProtocoloDTO->setDblIdProtocolo($parNumIdDocumento); 812 $objProtocoloDTO->setDblIdProtocolo($parNumIdDocumento);
@@ -807,8 +816,18 @@ class ReceberProcedimentoRN extends InfraRN @@ -807,8 +816,18 @@ class ReceberProcedimentoRN extends InfraRN
807 $objProtocoloDTO->setNumIdHipoteseLegal($this->obterHipoteseLegalSEI($parObjMetadadoDocumento->hipoteseLegal->identificacao)); 816 $objProtocoloDTO->setNumIdHipoteseLegal($this->obterHipoteseLegalSEI($parObjMetadadoDocumento->hipoteseLegal->identificacao));
808 } 817 }
809 818
810 - $objProtocoloRN = new ProtocoloRN();  
811 - $objProtocoloRN->alterarRN0203($objProtocoloDTO); 819 + //Esta unidade deverá ser considerada para posterior desbloqueio do processo e reabertura
  820 + $numIdUnidade = ProcessoEletronicoRN::obterUnidadeParaRegistroDocumento($parNumIdProcedimento);
  821 + SessaoSEI::getInstance()->setNumIdUnidadeAtual($numIdUnidade);
  822 +
  823 + try{
  824 + $objProtocoloRN = new ProtocoloRN();
  825 + $objProtocoloRN->alterarRN0203($objProtocoloDTO);
  826 + } finally {
  827 + $objPenParametroRN = new PenParametroRN();
  828 + $numUnidadeReceptora = $objPenParametroRN->getParametro('PEN_UNIDADE_GERADORA_DOCUMENTO_RECEBIDO');
  829 + SessaoSEI::getInstance()->setNumIdUnidadeAtual($numUnidadeReceptora);
  830 + }
812 } 831 }
813 832
814 833
@@ -1051,6 +1070,7 @@ class ReceberProcedimentoRN extends InfraRN @@ -1051,6 +1070,7 @@ class ReceberProcedimentoRN extends InfraRN
1051 //Obter dados dos documentos já registrados no sistema 1070 //Obter dados dos documentos já registrados no sistema
1052 $objComponenteDigitalDTO = new ComponenteDigitalDTO(); 1071 $objComponenteDigitalDTO = new ComponenteDigitalDTO();
1053 $objComponenteDigitalDTO->retNumOrdem(); 1072 $objComponenteDigitalDTO->retNumOrdem();
  1073 + $objComponenteDigitalDTO->retDblIdProcedimento();
1054 $objComponenteDigitalDTO->retDblIdDocumento(); 1074 $objComponenteDigitalDTO->retDblIdDocumento();
1055 $objComponenteDigitalDTO->retStrHashConteudo(); 1075 $objComponenteDigitalDTO->retStrHashConteudo();
1056 $objComponenteDigitalDTO->setStrNumeroRegistro($strNumeroRegistro); 1076 $objComponenteDigitalDTO->setStrNumeroRegistro($strNumeroRegistro);
@@ -1094,7 +1114,7 @@ class ReceberProcedimentoRN extends InfraRN @@ -1094,7 +1114,7 @@ class ReceberProcedimentoRN extends InfraRN
1094 1114
1095 if(array_key_exists($objDocumento->ordem, $arrObjComponenteDigitalDTOIndexado)){ 1115 if(array_key_exists($objDocumento->ordem, $arrObjComponenteDigitalDTOIndexado)){
1096 $objComponenteDigitalDTO = $arrObjComponenteDigitalDTOIndexado[$objDocumento->ordem]; 1116 $objComponenteDigitalDTO = $arrObjComponenteDigitalDTOIndexado[$objDocumento->ordem];
1097 - $this->alterarMetadadosDocumento($objComponenteDigitalDTO->getDblIdDocumento(), $objDocumento); 1117 + $this->alterarMetadadosDocumento($objComponenteDigitalDTO->getDblIdProcedimento(), $objComponenteDigitalDTO->getDblIdDocumento(), $objDocumento);
1098 $objDocumento->idDocumentoSEI = $objComponenteDigitalDTO->getDblIdDocumento(); 1118 $objDocumento->idDocumentoSEI = $objComponenteDigitalDTO->getDblIdDocumento();
1099 continue; 1119 continue;
1100 } 1120 }
@@ -1242,7 +1262,7 @@ class ReceberProcedimentoRN extends InfraRN @@ -1242,7 +1262,7 @@ class ReceberProcedimentoRN extends InfraRN
1242 $strConteudoCodificado = $objDocumentoDTO->getStrConteudo(); 1262 $strConteudoCodificado = $objDocumentoDTO->getStrConteudo();
1243 $objDocumentoDTO->setStrConteudo(null); 1263 $objDocumentoDTO->setStrConteudo(null);
1244 $objDocumentoDTO->getObjProtocoloDTO()->setNumIdUnidadeGeradora(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); 1264 $objDocumentoDTO->getObjProtocoloDTO()->setNumIdUnidadeGeradora(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
1245 - $objDocumentoDTO->setStrSinBloqueado('S'); 1265 + $objDocumentoDTO->setStrSinBloqueado('N');
1246 1266
1247 //TODO: Fazer a atribuição dos componentes digitais do processo a partir desse ponto 1267 //TODO: Fazer a atribuição dos componentes digitais do processo a partir desse ponto
1248 $this->atribuirComponentesDigitais($objDocumentoDTO, $objDocumento->componenteDigital); 1268 $this->atribuirComponentesDigitais($objDocumentoDTO, $objDocumento->componenteDigital);