Commit f55d89579e1fc8e36269d454c3a3b8b7ff8264d5

Authored by Guilherme Andrade Del Cantoni
1 parent f1cd004f

[Fixed #97] Correção de problema na reutilização de NRE em cancelamentos

dto/ComponenteDigitalDTO.php
... ... @@ -28,11 +28,14 @@ class ComponenteDigitalDTO extends InfraDTO {
28 28 $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'Ordem', 'ordem');
29 29 $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'SinEnviar', 'sin_enviar');
30 30  
  31 + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'StaTipoTramite', 'sta_tipo_tramite', 'md_pen_tramite');
31 32 $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_NUM, 'TicketEnvioComponentes', 'ticket_envio_componentes', 'md_pen_tramite');
32 33 $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'ConteudoAssinaturaDocumento', 'conteudo_assinatura', 'documento_conteudo');
33 34 $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'ProtocoloDocumentoFormatado', 'protocolo_formatado', 'protocolo');
  35 + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'StaProtocolo', 'sta_protocolo', 'protocolo');
34 36 $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'StaEstadoProtocolo', 'sta_estado', 'protocolo');
35 37  
  38 +
36 39 $this->configurarPK('NumeroRegistro', InfraDTO::$TIPO_PK_INFORMADO);
37 40 $this->configurarPK('IdDocumento', InfraDTO::$TIPO_PK_INFORMADO);
38 41  
... ...
rn/ExpedirProcedimentoRN.php
... ... @@ -365,31 +365,45 @@ class ExpedirProcedimentoRN extends InfraRN {
365 365  
366 366 //Obtenção do número de registro eletrônico do processo
367 367 $strNumeroRegistro = null;
368   - $objProcessoEletronicoBD = new ProcessoEletronicoBD($this->getObjInfraIBanco());
369   - $objProcessoEletronicoDTO = new ProcessoEletronicoDTO();
370   - $objProcessoEletronicoDTO->setDblIdProcedimento($objExpedirProcedimentoDTO->getDblIdProcedimento());
371   - //TODO: Tratar situao de quando localizado dois registros para o mesmo processo
372   - $objProcessoEletronicoDTO->setNumMaxRegistrosRetorno(1);
373   - $objProcessoEletronicoDTO->setOrd('IdProcedimento', InfraDTO::$TIPO_ORDENACAO_DESC);
374   - $objProcessoEletronicoDTO->retStrNumeroRegistro();
375 368  
376   - $objProcessoEletronicoDTO = $objProcessoEletronicoBD->consultar($objProcessoEletronicoDTO);
377   - if(isset($objProcessoEletronicoDTO)) {
378   - $strNumeroRegistro = $objProcessoEletronicoDTO->getStrNumeroRegistro();
  369 + $objTramiteBD = new TramiteBD($this->getObjInfraIBanco());
  370 + $objTramiteDTOFiltro = new TramiteDTO();
  371 + $objTramiteDTOFiltro->retStrNumeroRegistro();
  372 + $objTramiteDTOFiltro->setNumIdProcedimento($objExpedirProcedimentoDTO->getDblIdProcedimento());
  373 + $objTramiteDTOFiltro->setOrdNumIdTramite(InfraDTO::$TIPO_ORDENACAO_DESC);
  374 + $objTramiteDTOFiltro->setNumMaxRegistrosRetorno(1);
  375 +
  376 + $objTramiteDTO = $objTramiteBD->consultar($objTramiteDTOFiltro);
  377 + if(isset($objTramiteDTO)) {
  378 + $strNumeroRegistro = $objTramiteDTO->getStrNumeroRegistro();
379 379 }
380 380  
381 381 // Consultar se processo eletrônico existe no PEN algum trâmite CANCELADO, caso
382 382 // sim deve ser gerada uma nova NRE, pois a atual ser recusada pelo PEN quando
383 383 // for enviado
384   - /* if(!InfraString::isBolVazia($strNumeroRegistro)) {
  384 + if(!InfraString::isBolVazia($strNumeroRegistro)) {
385 385 $arrObjTramite = $this->objProcessoEletronicoRN->consultarTramites(null, $strNumeroRegistro);
386   - if(!empty($arrObjTramite) && is_array($arrObjTramite) && count($arrObjTramite) === 1) {
387   - $objTramite = current($arrObjTramite);
388   - if($objTramite->situacaoAtual == ProcessoeletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO || $objTramite->situacaoAtual == ProcessoeletronicoRN::$STA_SITUACAO_TRAMITE_RECUSADO){
  386 + if(!empty($arrObjTramite) && is_array($arrObjTramite)) {
  387 +
  388 + $arrNumSituacoesTramiteEfetivado = array(
  389 + ProcessoeletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_ENVIADO_DESTINATARIO,
  390 + ProcessoeletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE,
  391 + );
  392 +
  393 + $bolExisteTramiteConcluido = false;
  394 + foreach ($arrObjTramite as $objTramite) {
  395 + //Caso exista algum trâmite realizado com sucesso para outro destinatário, número do NRE precisa ser reutilizado
  396 + if(in_array($objTramite->situacaoAtual, $arrNumSituacoesTramiteEfetivado)){
  397 + $bolExisteTramiteConcluido = true;
  398 + break;
  399 + }
  400 + }
  401 +
  402 + if(!$bolExisteTramiteConcluido){
389 403 $strNumeroRegistro = null;
390 404 }
391 405 }
392   - } */
  406 + }
393 407  
394 408 return $this->objProcessoEletronicoRN->construirCabecalho(
395 409 $strNumeroRegistro,
... ... @@ -2241,7 +2255,7 @@ class ExpedirProcedimentoRN extends InfraRN {
2241 2255 $tramite = $tramites ? $tramites[0] : null;
2242 2256  
2243 2257 if (!$tramite) {
2244   - throw new InfraException('Trâmite não encontrado para esse processo. ');
  2258 + throw new InfraException("Trâmite não encontrado para esse processo. ({$objDtoProtocolo->getDblIdProtocolo()})");
2245 2259 }
2246 2260  
2247 2261 //Verifica se o trâmite est com o status de iniciado
... ...
rn/ProcessoEletronicoRN.php
... ... @@ -918,9 +918,7 @@ class ProcessoEletronicoRN extends InfraRN {
918 918 }
919 919  
920 920 $objTramitesEncontrados = $this->getObjPenWs()->consultarTramites($parametro);
921   -
922 921 if(isset($objTramitesEncontrados->tramitesEncontrados)) {
923   -
924 922 $arrObjTramite = $objTramitesEncontrados->tramitesEncontrados->tramite;
925 923 if(!is_array($arrObjTramite)) {
926 924 $arrObjTramite = array($objTramitesEncontrados->tramitesEncontrados->tramite);
... ... @@ -1455,10 +1453,10 @@ class ProcessoEletronicoRN extends InfraRN {
1455 1453 $arrObjAtividadeDTO = $objAtividadeRN->listarRN0036($objAtividadeDTO);
1456 1454 $numIdUnidade = SessaoSEI::getInstance()->getNumIdUnidadeAtual();
1457 1455  
1458   - //if(!empty($arrObjAtividadeDTO)){
1459   - // $objAtividadeDTO = $arrObjAtividadeDTO[0];
1460   - // $numIdUnidade = $objAtividadeDTO->getNumIdUnidade();
1461   - //}
  1456 + if(!empty($arrObjAtividadeDTO)){
  1457 + $objAtividadeDTO = $arrObjAtividadeDTO[0];
  1458 + $numIdUnidade = $objAtividadeDTO->getNumIdUnidade();
  1459 + }
1462 1460  
1463 1461 return $numIdUnidade;
1464 1462 }
... ...
rn/ReceberComponenteDigitalRN.php
... ... @@ -143,7 +143,6 @@ class ReceberComponenteDigitalRN extends InfraRN
143 143 $objDocumentoDTO->setObjProtocoloDTO($objProtocoloDTO);
144 144 $objProtocoloDTO->setArrObjAnexoDTO(array($parObjAnexoDTO));
145 145  
146   - $objDocumentoDTO->setStrSinBloqueado('S');
147 146 $objDocumentoDTO = $objDocumentoRN->alterarRN0004($objDocumentoDTO);
148 147 }
149 148 }
... ...
rn/ReceberProcedimentoRN.php
... ... @@ -94,7 +94,6 @@ class ReceberProcedimentoRN extends InfraRN
94 94 $this->gravarLogDebug("Obtendo metadados dos componentes digitais do processo", 4);
95 95 $arrAnexosComponentes = array();
96 96 $arrayHash = array();
97   - $arrayHashPendentes = array();
98 97  
99 98 // Lista todos os componentes digitais presente no protocolo
100 99 // Esta verificação é necessária pois existem situações em que a lista de componentes digitais
... ... @@ -111,30 +110,21 @@ class ReceberProcedimentoRN extends InfraRN
111 110  
112 111 $numOrdemComponente = $key + 1;
113 112 if(!is_null($componentePendente)){
114   -
115   - //Verifica se o componente já foi recebido
116   - $bolComponenteDigitalRegistrado = $this->documentoJaRegistrado($strNumeroRegistro, $parNumIdentificacaoTramite, $componentePendente);
117   - if(!$bolComponenteDigitalRegistrado){
118   - $arrayHashPendentes[] = $componentePendente;
119   - }
120   -
  113 + //TODO: Necessário otimizar trecho abaixo para evitar download desnecessário de documentos
121 114 //TODO: Download do componente digital é realizado, mesmo já existindo na base de dados, devido a comportamento obrigatório do Barramento para mudança de status
122 115 //Ajuste deverá ser feito em versões futuas
123 116 $arrayHash[] = $componentePendente;
124 117  
125   - if(!$bolComponenteDigitalRegistrado || in_array($componentePendente, $arrHashPendentesDownload)) {
126   - //Obter os dados do componente digital
127   - $this->gravarLogDebug("Baixando componente digital $numOrdemComponente", 6);
128   - $objComponenteDigital = $this->objProcessoEletronicoRN->receberComponenteDigital($parNumIdentificacaoTramite, $componentePendente, $objTramite->protocolo);
129   - $arrAnexosComponentes[$key][$componentePendente] = $this->objReceberComponenteDigitalRN->copiarComponenteDigitalPastaTemporaria($objComponenteDigital);
130   - $arrAnexosComponentes[$key]['recebido'] = false;
131   -
132   - //Valida a integridade do hash
133   - $this->gravarLogDebug("Validando integridade de componente digital $numOrdemComponente", 6);
134   - $this->objReceberComponenteDigitalRN->validarIntegridadeDoComponenteDigital($arrAnexosComponentes[$key][$componentePendente], $componentePendente, $parNumIdentificacaoTramite);
135   - } else {
136   - $this->gravarLogDebug("Componente digital $numOrdemComponente desconsiderado por já fazer parte do processo", 6);
137   - }
  118 + //Obter os dados do componente digital
  119 + $this->gravarLogDebug("Baixando componente digital $numOrdemComponente", 6);
  120 + $objComponenteDigital = $this->objProcessoEletronicoRN->receberComponenteDigital($parNumIdentificacaoTramite, $componentePendente, $objTramite->protocolo);
  121 + $arrAnexosComponentes[$key][$componentePendente] = $this->objReceberComponenteDigitalRN->copiarComponenteDigitalPastaTemporaria($objComponenteDigital);
  122 + $arrAnexosComponentes[$key]['recebido'] = false;
  123 +
  124 + //Valida a integridade do hash
  125 + $this->gravarLogDebug("Validando integridade de componente digital $numOrdemComponente", 6);
  126 + $this->objReceberComponenteDigitalRN->validarIntegridadeDoComponenteDigital($arrAnexosComponentes[$key][$componentePendente],
  127 + $componentePendente, $parNumIdentificacaoTramite);
138 128 }
139 129 }
140 130  
... ... @@ -154,13 +144,11 @@ class ReceberProcedimentoRN extends InfraRN
154 144 }
155 145  
156 146 $this->gravarLogDebug("Persistindo/atualizando dados do processo com NRE " . $strNumeroRegistro, 4);
157   - $objProcedimentoDTO = $this->registrarProcesso(
  147 + list($objProcedimentoDTO, $bolProcedimentoExistente) = $this->registrarProcesso(
158 148 $strNumeroRegistro,
159 149 $parNumIdentificacaoTramite,
160 150 $objProcesso,
161   - $objMetadadosProcedimento,
162   - $arrayHash,
163   - $arrayHashPendentes);
  151 + $objMetadadosProcedimento);
164 152  
165 153 // @join_tec US008.08 (#23092)
166 154 $this->objProcedimentoAndamentoRN->setOpts($strNumeroRegistro, $parNumIdentificacaoTramite, ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO), $objProcedimentoDTO->getDblIdProcedimento());
... ... @@ -194,7 +182,9 @@ class ReceberProcedimentoRN extends InfraRN
194 182 $this->atribuirComponentesDigitaisAosDocumentos($objProcedimentoDTO, $strNumeroRegistro, $parNumIdentificacaoTramite, $arrayHash, $arrayHashPendentes);
195 183  
196 184 //Finalizar o envio do documento para a respectiva unidade
197   - $this->enviarProcedimentoUnidade($objProcedimentoDTO);
  185 + $this->enviarProcedimentoUnidade($objProcedimentoDTO, null, $bolProcedimentoExistente);
  186 +
  187 + $this->validarPosCondicoesTramite($objMetadadosProcedimento->metadados, $objProcedimentoDTO);
198 188  
199 189 $this->gravarLogDebug("Enviando recibo de conclusão do trâmite $parNumIdentificacaoTramite", 6);
200 190 $objEnviarReciboTramiteRN = new EnviarReciboTramiteRN();
... ... @@ -215,14 +205,12 @@ class ReceberProcedimentoRN extends InfraRN
215 205 /**
216 206 * Método responsável por atribuir a lista de componentes digitais baixados do PEN aos seus respectivos documentos no SEI
217 207 *
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 208 * @return [type] [description]
221 209 */
222 210 private function atribuirComponentesDigitaisAosDocumentos(ProcedimentoDTO $parObjProcedimentoDTO, $parStrNumeroRegistro, $parNumIdentificacaoTramite,
223   - $parArrHashComponentes, $parArrHashComponentesPendentes)
  211 + $parArrHashComponentes)
224 212 {
225   - if(count($parArrHashComponentesPendentes) > 0){
  213 + if(count($parArrHashComponentes) > 0){
226 214 //Obter dados dos componetes digitais
227 215 $this->gravarLogDebug("Iniciando o recebimento dos componentes digitais pendentes", 4);
228 216 $objComponenteDigitalDTO = new ComponenteDigitalDTO();
... ... @@ -230,6 +218,7 @@ class ReceberProcedimentoRN extends InfraRN
230 218 $objComponenteDigitalDTO->setNumIdTramite($parNumIdentificacaoTramite);
231 219 $objComponenteDigitalDTO->setStrHashConteudo($parArrHashComponentes, InfraDTO::$OPER_IN);
232 220 $objComponenteDigitalDTO->setOrdNumOrdem(InfraDTO::$TIPO_ORDENACAO_ASC);
  221 + $objComponenteDigitalDTO->retDblIdProcedimento();
233 222 $objComponenteDigitalDTO->retDblIdDocumento();
234 223 $objComponenteDigitalDTO->retNumTicketEnvioComponentes();
235 224 $objComponenteDigitalDTO->retStrProtocoloDocumentoFormatado();
... ... @@ -243,33 +232,27 @@ class ReceberProcedimentoRN extends InfraRN
243 232 $objComponenteDigitalBD = new ComponenteDigitalBD($this->getObjInfraIBanco());
244 233 $arrObjComponentesDigitaisDTO = $objComponenteDigitalBD->listar($objComponenteDigitalDTO);
245 234  
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);
  235 + if(!empty($arrObjComponentesDigitaisDTO)){
250 236  
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]';
  237 + $arrStrNomeDocumento = $this->listarMetaDadosComponentesDigitais($objProcesso);
  238 + foreach($arrObjComponentesDigitaisDTO as $objComponenteDigitalDTOEnviado) {
  239 + if($objComponenteDigitalDTOEnviado->getStrStaEstadoProtocolo() != ProtocoloRN::$TE_DOCUMENTO_CANCELADO){
257 240  
258   - //Todo: Parei aqui: Verificar se documento já foi recebido anteriormente para poder registrar
259   - //Alterar somente de documentos não bloqueados
  241 + $dblIdProcedimento = $objComponenteDigitalDTOEnviado->getDblIdProcedimento();
  242 + $dblIdDocumento = $objComponenteDigitalDTOEnviado->getDblIdDocumento();
  243 + $strHash = $objComponenteDigitalDTOEnviado->getStrHashConteudo();
  244 +
  245 + //Verificar se documento já foi recebido anteriormente para poder registrar
  246 + if($this->documentosPendenteRegistro($dblIdProcedimento, $dblIdDocumento, $strHash)){
  247 + $strNomeDocumento = array_key_exists($strHash, $arrStrNomeDocumento) ? $arrStrNomeDocumento[$strHash]['especieNome'] : '[Desconhecido]';
260 248 $this->objReceberComponenteDigitalRN->receberComponenteDigital($objComponenteDigitalDTOEnviado);
261 249 $strMensagemRecebimento = sprintf('Recebendo %s %s', $strNomeDocumento, $objComponenteDigitalDTOEnviado->getStrProtocoloDocumentoFormatado());
262 250 $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento($strMensagemRecebimento, 'S'));
263 251 $this->gravarLogDebug($strMensagemRecebimento, 6);
264 252 }
265 253 }
266   - } finally {
267   - $objPenParametroRN = new PenParametroRN();
268   - $numUnidadeReceptora = $objPenParametroRN->getParametro('PEN_UNIDADE_GERADORA_DOCUMENTO_RECEBIDO');
269   - SessaoSEI::getInstance()->setNumIdUnidadeAtual($numUnidadeReceptora);
270 254 }
271 255  
272   - // @join_tec US008.10 (#23092)
273 256 $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Todos os componentes digitais foram recebidos', 'S'));
274 257 }else{
275 258 $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Nenhum componente digital para receber', 'S'));
... ... @@ -438,8 +421,7 @@ class ReceberProcedimentoRN extends InfraRN
438 421 }
439 422  
440 423  
441   - private function registrarProcesso($parStrNumeroRegistro, $parNumIdentificacaoTramite, $parObjProcesso, $parObjMetadadosProcedimento,
442   - $parArrHashComponentes, $parArrHashComponentesPendentes)
  424 + private function registrarProcesso($parStrNumeroRegistro, $parNumIdentificacaoTramite, $parObjProcesso, $parObjMetadadosProcedimento)
443 425 {
444 426 // Validação dos dados do processo recebido
445 427 $objInfraException = new InfraException();
... ... @@ -453,17 +435,15 @@ class ReceberProcedimentoRN extends InfraRN
453 435  
454 436 //Verificar se procedimento já existia na base de dados do sistema
455 437 $dblIdProcedimento = $this->consultarProcedimentoExistente($parStrNumeroRegistro, $parObjProcesso->protocolo);
  438 + $bolProcedimentoExistente = isset($dblIdProcedimento);
456 439  
457   - if(isset($dblIdProcedimento)){
458   - $objProcedimentoDTO = $this->atualizarProcedimento($dblIdProcedimento, $parObjMetadadosProcedimento, $parObjProcesso, $parNumIdentificacaoTramite, $parArrHashComponentes, $parArrHashComponentesPendentes);
  440 + if($bolProcedimentoExistente){
  441 + $objProcedimentoDTO = $this->atualizarProcedimento($dblIdProcedimento, $parObjMetadadosProcedimento, $parObjProcesso, $parNumIdentificacaoTramite);
459 442 }
460 443 else {
461   - $objProcedimentoDTO = $this->gerarProcedimento($parObjMetadadosProcedimento, $parObjProcesso, $parNumIdentificacaoTramite, $parArrHashComponentes, $parArrHashComponentesPendentes);
  444 + $objProcedimentoDTO = $this->gerarProcedimento($parObjMetadadosProcedimento, $parObjProcesso, $parNumIdentificacaoTramite);
462 445 }
463 446  
464   - //TODO: Fazer o envio de cada um dos procedimentos apensados (Processo principal e seus apensados, caso exista)
465   - //...
466   -
467 447 //Chamada recursiva para registro dos processos apensados
468 448 if(isset($objProcesso->processoApensado)) {
469 449 if(!is_array($objProcesso->processoApensado)) {
... ... @@ -475,7 +455,7 @@ class ReceberProcedimentoRN extends InfraRN
475 455 }
476 456 }
477 457  
478   - return $objProcedimentoDTO;
  458 + return array($objProcedimentoDTO, $bolProcedimentoExistente);
479 459 }
480 460  
481 461 private function tramiteRecebimentoRegistrado($parStrNumeroRegistro, $parNumIdentificacaoTramite)
... ... @@ -489,18 +469,6 @@ class ReceberProcedimentoRN extends InfraRN
489 469 }
490 470  
491 471  
492   - private function documentoJaRegistrado($parStrNumeroRegistro, $parNumIdentificacaoTramite, $parStrHashComponenteDigital)
493   - {
494   - //Verifica se componente digital já está registrado para o documento
495   - $objComponenteDigitalDTO = new ComponenteDigitalDTO();
496   - $objComponenteDigitalDTO->setStrNumeroRegistro($parStrNumeroRegistro);
497   - $objComponenteDigitalDTO->setStrHashConteudo($parStrHashComponenteDigital);
498   - $objComponenteDigitalDTO->setNumIdAnexo(null, InfraDTO::$OPER_DIFERENTE);
499   -
500   - $objComponenteDigitalBD = new ComponenteDigitalBD($this->getObjInfraIBanco());
501   - return $objComponenteDigitalBD->contar($objComponenteDigitalDTO) > 0;
502   - }
503   -
504 472  
505 473 private function consultarProcedimentoExistente($parStrNumeroRegistro, $parStrProtocolo = null)
506 474 {
... ... @@ -520,7 +488,7 @@ class ReceberProcedimentoRN extends InfraRN
520 488 return $dblIdProcedimento;
521 489 }
522 490  
523   - private function atualizarProcedimento($parDblIdProcedimento, $objMetadadosProcedimento, $objProcesso, $parNumIdTramite, $parArrHashComponentes, $parArrHashComponentesPendentes)
  491 + private function atualizarProcedimento($parDblIdProcedimento, $objMetadadosProcedimento, $objProcesso, $parNumIdTramite)
524 492 {
525 493 if(!isset($parDblIdProcedimento)){
526 494 throw new InfraException('Parâmetro $parDblIdProcedimento não informado.');
... ... @@ -530,7 +498,6 @@ class ReceberProcedimentoRN extends InfraRN
530 498 throw new InfraException('Parâmetro $objMetadadosProcedimento não informado.');
531 499 }
532 500  
533   -
534 501 if ($this->destinatarioReal) {
535 502 $objDestinatario = $this->destinatarioReal;
536 503 } else {
... ... @@ -542,6 +509,8 @@ class ReceberProcedimentoRN extends InfraRN
542 509 $numIdUnidade = ProcessoEletronicoRN::obterUnidadeParaRegistroDocumento($parDblIdProcedimento);
543 510 SessaoSEI::getInstance()->setNumIdUnidadeAtual($numIdUnidade);
544 511  
  512 + $objPenParametroRN = new PenParametroRN();
  513 +
545 514 try {
546 515 $objSeiRN = new SeiRN();
547 516 $objAtividadeDTO = new AtividadeDTO();
... ... @@ -567,49 +536,49 @@ class ReceberProcedimentoRN extends InfraRN
567 536 $objProcedimentoRN = new ProcedimentoRN();
568 537 $objProcedimentoDTO = $objProcedimentoRN->consultarRN0201($objProcedimentoDTO);
569 538  
570   - $this->registrarAndamentoRecebimentoProcesso($objProcedimentoDTO, $objMetadadosProcedimento);
571   -
572 539 if($flgReabrir){
573 540 $objEntradaReabrirProcessoAPI = new EntradaReabrirProcessoAPI();
574 541 $objEntradaReabrirProcessoAPI->setIdProcedimento($parDblIdProcedimento);
575 542 $objSeiRN->reabrirProcesso($objEntradaReabrirProcessoAPI);
576 543 }
577 544  
578   - //Cadastro das atividades para quando o destinatário é desviado pelo receptor (!3!)
579   - if ($this->destinatarioReal->numeroDeIdentificacaoDaEstrutura) {
580   - $this->gerarAndamentoUnidadeReceptora($parDblIdProcedimento);
581   - }
582   -
583 545 ProcessoEletronicoRN::desbloquearProcesso($parDblIdProcedimento);
584 546  
585   - //TODO: Obter código da unidade através de mapeamento entre SEI e Barramento
586   - $objUnidadeDTO = $this->atribuirDadosUnidade($objProcedimentoDTO, $objDestinatario);
  547 + $numUnidadeReceptora = $objPenParametroRN->getParametro('PEN_UNIDADE_GERADORA_DOCUMENTO_RECEBIDO');
  548 + $this->enviarProcedimentoUnidade($objProcedimentoDTO, $numUnidadeReceptora);
  549 +
  550 + } finally {
  551 + $numUnidadeReceptora = $objPenParametroRN->getParametro('PEN_UNIDADE_GERADORA_DOCUMENTO_RECEBIDO');
  552 + SessaoSEI::getInstance()->setNumIdUnidadeAtual($numUnidadeReceptora);
  553 + }
587 554  
588   - $this->atribuirDocumentos($objProcedimentoDTO, $objProcesso, $objUnidadeDTO, $objMetadadosProcedimento);
  555 + $this->registrarAndamentoRecebimentoProcesso($objProcedimentoDTO, $objMetadadosProcedimento);
589 556  
590   - $this->registrarProcedimentoNaoVisualizado($objProcedimentoDTO);
  557 + //Cadastro das atividades para quando o destinatário é desviado pelo receptor (!3!)
  558 + if ($this->destinatarioReal->numeroDeIdentificacaoDaEstrutura) {
  559 + $this->gerarAndamentoUnidadeReceptora($parDblIdProcedimento);
  560 + }
591 561  
592   - //TODO: Avaliar necessidade de restringir referência circular entre processos
593   - //TODO: Registrar que o processo foi recebido com outros apensados. Necessário para posterior reenvio
594   - $this->atribuirProcessosApensados($objProcedimentoDTO, $objProcesso->processoApensado);
  562 + //TODO: Obter código da unidade através de mapeamento entre SEI e Barramento
  563 + $objUnidadeDTO = $this->atribuirDadosUnidade($objProcedimentoDTO, $objDestinatario);
595 564  
596   - //Realiza a alteração dos metadados do processo
597   - //TODO: Implementar alteração de todos os metadados
598   - $this->alterarMetadadosProcedimento($objProcedimentoDTO->getDblIdProcedimento(), $objProcesso);
  565 + $this->atribuirDocumentos($objProcedimentoDTO, $objProcesso, $objUnidadeDTO, $objMetadadosProcedimento);
599 566  
600   - //Finaliza o envio do documento para a respectiva unidade
601   - //$this->enviarProcedimentoUnidade($objProcedimentoDTO, true);
  567 + $this->registrarProcedimentoNaoVisualizado($objProcedimentoDTO);
602 568  
603   - return $objProcedimentoDTO;
  569 + //TODO: Avaliar necessidade de restringir referência circular entre processos
  570 + //TODO: Registrar que o processo foi recebido com outros apensados. Necessário para posterior reenvio
  571 + $this->atribuirProcessosApensados($objProcedimentoDTO, $objProcesso->processoApensado);
604 572  
605   - } finally {
606   - $objPenParametroRN = new PenParametroRN();
607   - $numUnidadeReceptora = $objPenParametroRN->getParametro('PEN_UNIDADE_GERADORA_DOCUMENTO_RECEBIDO');
608   - SessaoSEI::getInstance()->setNumIdUnidadeAtual($numUnidadeReceptora);
609   - }
610   - }
  573 + //Realiza a alteração dos metadados do processo
  574 + //TODO: Implementar alteração de todos os metadados
  575 + $this->alterarMetadadosProcedimento($objProcedimentoDTO->getDblIdProcedimento(), $objProcesso);
611 576  
  577 + //Finaliza o envio do documento para a respectiva unidade
  578 + //$this->enviarProcedimentoUnidade($objProcedimentoDTO, true);
612 579  
  580 + return $objProcedimentoDTO;
  581 + }
613 582  
614 583  
615 584 private function gerarAndamentoUnidadeReceptora($parNumIdProcedimento)
... ... @@ -643,7 +612,7 @@ class ReceberProcedimentoRN extends InfraRN
643 612 $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO);
644 613 }
645 614  
646   - private function gerarProcedimento($objMetadadosProcedimento, $objProcesso, $parNumIdTramite, $parArrHashComponentes, $parArrHashComponentesPendentes)
  615 + private function gerarProcedimento($objMetadadosProcedimento, $objProcesso, $parNumIdTramite)
647 616 {
648 617 if(!isset($objMetadadosProcedimento)){
649 618 throw new InfraException('Parâmetro $objMetadadosProcedimento não informado.');
... ... @@ -791,18 +760,8 @@ class ReceberProcedimentoRN extends InfraRN
791 760 $objProtocoloDTO->setNumIdHipoteseLegal($this->obterHipoteseLegalSEI($parObjMetadadoProcedimento->hipoteseLegal->identificacao));
792 761 }
793 762  
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   - }
  763 + $objProtocoloRN = new ProtocoloRN();
  764 + $objProtocoloRN->alterarRN0203($objProtocoloDTO);
806 765 }
807 766  
808 767 private function alterarMetadadosDocumento($parNumIdProcedimento, $parNumIdDocumento, $parObjMetadadoDocumento)
... ... @@ -816,18 +775,8 @@ class ReceberProcedimentoRN extends InfraRN
816 775 $objProtocoloDTO->setNumIdHipoteseLegal($this->obterHipoteseLegalSEI($parObjMetadadoDocumento->hipoteseLegal->identificacao));
817 776 }
818 777  
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   - }
  778 + $objProtocoloRN = new ProtocoloRN();
  779 + $objProtocoloRN->alterarRN0203($objProtocoloDTO);
831 780 }
832 781  
833 782  
... ... @@ -1203,16 +1152,17 @@ class ReceberProcedimentoRN extends InfraRN
1203 1152 $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
1204 1153  
1205 1154 //TODO: Possivelmente, essa regra é desnecessária já que o processo pode ser enviado para outra unidade do órgão através da expedição
1206   - $objAtividadeRN = new AtividadeRN();
1207   - if ($objAtividadeRN->contarRN0035($objAtividadeDTO) == 0) {
1208   - throw new InfraException('Unidade '.$objUnidadeDTO->getStrSigla().' não possui acesso ao Procedimento '.$objProcedimentoDTO->getStrProtocoloProcedimentoFormatado().'.');
1209   - }
  1155 + //$objAtividadeRN = new AtividadeRN();
  1156 + //if ($objAtividadeRN->contarRN0035($objAtividadeDTO) == 0) {
  1157 + // throw new InfraException('Unidade '.$objUnidadeDTO->getStrSigla().' não possui acesso ao Procedimento '.$objProcedimentoDTO->getStrProtocoloProcedimentoFormatado().'.');
  1158 + //}
1210 1159  
1211 1160 $objAtividadeDTO = new AtividadeDTO();
1212 1161 $objAtividadeDTO->setDblIdProtocolo($objDocumentoDTO->getDblIdProcedimento());
1213 1162 $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
1214 1163 $objAtividadeDTO->setDthConclusao(null);
1215 1164  
  1165 + $objAtividadeRN = new AtividadeRN();
1216 1166 if ($objAtividadeRN->contarRN0035($objAtividadeDTO) == 0) {
1217 1167 $objReabrirProcessoDTO = new ReabrirProcessoDTO();
1218 1168 $objReabrirProcessoDTO->setDblIdProcedimento($objDocumentoDTO->getDblIdProcedimento());
... ... @@ -1555,23 +1505,34 @@ class ReceberProcedimentoRN extends InfraRN
1555 1505 $objAtividadeRN->atualizarVisualizacao($objAtividadeDTOVisualizacao);
1556 1506 }
1557 1507  
1558   - private function enviarProcedimentoUnidade(ProcedimentoDTO $parObjProcedimentoDTO, $retransmissao = false)
  1508 + private function enviarProcedimentoUnidade(ProcedimentoDTO $parObjProcedimentoDTO, $parUnidadeDestino=null, $retransmissao=false)
1559 1509 {
1560 1510 $objAtividadeRN = new PenAtividadeRN();
  1511 + $objPenParametroRN = new PenParametroRN();
1561 1512 $objInfraException = new InfraException();
1562 1513  
1563   - if(!$parObjProcedimentoDTO->isSetArrObjUnidadeDTO() || count($parObjProcedimentoDTO->getArrObjUnidadeDTO()) == 0) {
1564   - $objInfraException->lancarValidacao('Unidade de destino do processo não informada.');
1565   - }
  1514 + $strEnviaEmailNotificacao = 'N';
  1515 + $numIdUnidade = $parUnidadeDestino;
1566 1516  
1567   - $arrObjUnidadeDTO = $parObjProcedimentoDTO->getArrObjUnidadeDTO();
  1517 + //Caso a unidade de destino não tenha sido informada, considerar as unidades atribuídas ao processo
  1518 + if(is_null($numIdUnidade)){
  1519 + if(!$parObjProcedimentoDTO->isSetArrObjUnidadeDTO() || count($parObjProcedimentoDTO->getArrObjUnidadeDTO()) == 0) {
  1520 + $objInfraException->lancarValidacao('Unidade de destino do processo não informada.');
  1521 + }
1568 1522  
1569   - if(count($parObjProcedimentoDTO->getArrObjUnidadeDTO()) > 1) {
1570   - $objInfraException->lancarValidacao('Não permitido a indicação de múltiplas unidades de destino para um processo recebido externamente.');
  1523 + $arrObjUnidadeDTO = $parObjProcedimentoDTO->getArrObjUnidadeDTO();
  1524 + if(count($parObjProcedimentoDTO->getArrObjUnidadeDTO()) > 1) {
  1525 + $objInfraException->lancarValidacao('Não permitido a indicação de múltiplas unidades de destino para um processo recebido externamente.');
  1526 + }
  1527 +
  1528 + $arrObjUnidadeDTO = array_values($parObjProcedimentoDTO->getArrObjUnidadeDTO());
  1529 + $objUnidadeDTO = $arrObjUnidadeDTO[0];
  1530 + $numIdUnidade = $objUnidadeDTO->getNumIdUnidade();
  1531 +
  1532 + //Somente considera regra de envio de e-mail para unidades vinculadas ao processo
  1533 + $strEnviaEmailNotificacao = $objPenParametroRN->getParametro('PEN_ENVIA_EMAIL_NOTIFICACAO_RECEBIMENTO');
1571 1534 }
1572 1535  
1573   - $arrObjUnidadeDTO = array_values($parObjProcedimentoDTO->getArrObjUnidadeDTO());
1574   - $objUnidadeDTO = $arrObjUnidadeDTO[0];
1575 1536  
1576 1537 $objProcedimentoDTO = new ProcedimentoDTO();
1577 1538 $objProcedimentoDTO->retDblIdProcedimento();
... ... @@ -1580,7 +1541,8 @@ class ReceberProcedimentoRN extends InfraRN
1580 1541 $objProcedimentoDTO->retNumIdTipoProcedimento();
1581 1542 $objProcedimentoDTO->retStrNomeTipoProcedimento();
1582 1543 $objProcedimentoDTO->retStrStaNivelAcessoGlobalProtocolo();
1583   - $objProcedimentoDTO->setStrProtocoloProcedimentoFormatado($parObjProcedimentoDTO->getStrProtocoloProcedimentoFormatado());
  1544 + $objProcedimentoDTO->setDblIdProcedimento($parObjProcedimentoDTO->getDblIdProcedimento());
  1545 +
1584 1546  
1585 1547 $objProcedimentoRN = new ProcedimentoRN();
1586 1548 $objProcedimentoDTO = $objProcedimentoRN->consultarRN0201($objProcedimentoDTO);
... ... @@ -1592,7 +1554,7 @@ class ReceberProcedimentoRN extends InfraRN
1592 1554 if ($objProcedimentoDTO->getStrStaNivelAcessoGlobalProtocolo()==ProtocoloRN::$NA_RESTRITO) {
1593 1555 $objAcessoDTO = new AcessoDTO();
1594 1556 $objAcessoDTO->setDblIdProtocolo($objProcedimentoDTO->getDblIdProcedimento());
1595   - $objAcessoDTO->setNumIdUnidade($objUnidadeDTO->getNumIdUnidade());
  1557 + $objAcessoDTO->setNumIdUnidade($numIdUnidade);
1596 1558  
1597 1559 $objAcessoRN = new AcessoRN();
1598 1560 if ($objAcessoRN->contar($objAcessoDTO)==0) {
... ... @@ -1628,7 +1590,6 @@ class ReceberProcedimentoRN extends InfraRN
1628 1590  
1629 1591 $objInfraException->lancarValidacoes();
1630 1592  
1631   -
1632 1593 $objEnviarProcessoDTO = new EnviarProcessoDTO();
1633 1594 $objEnviarProcessoDTO->setArrAtividadesOrigem($arrObjProcedimentoDTO[0]->getArrObjAtividadeDTO());
1634 1595  
... ... @@ -1636,14 +1597,11 @@ class ReceberProcedimentoRN extends InfraRN
1636 1597 $objAtividadeDTO->setDblIdProtocolo($objProcedimentoDTO->getDblIdProcedimento());
1637 1598 $objAtividadeDTO->setNumIdUsuario(null);
1638 1599 $objAtividadeDTO->setNumIdUsuarioOrigem(SessaoSEI::getInstance()->getNumIdUsuario());
1639   - $objAtividadeDTO->setNumIdUnidade($objUnidadeDTO->getNumIdUnidade());
  1600 + $objAtividadeDTO->setNumIdUnidade($numIdUnidade);
1640 1601 $objAtividadeDTO->setNumIdUnidadeOrigem(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
1641 1602 $objEnviarProcessoDTO->setArrAtividades(array($objAtividadeDTO));
1642 1603  
1643   - $objPenParametroRN = new PenParametroRN();
1644   -
1645 1604 $objEnviarProcessoDTO->setStrSinManterAberto('N');
1646   - $strEnviaEmailNotificacao = $objPenParametroRN->getParametro('PEN_ENVIA_EMAIL_NOTIFICACAO_RECEBIMENTO');
1647 1605 $objEnviarProcessoDTO->setStrSinEnviarEmailNotificacao($strEnviaEmailNotificacao);
1648 1606 $objEnviarProcessoDTO->setStrSinRemoverAnotacoes('S');
1649 1607 $objEnviarProcessoDTO->setDtaPrazo(null);
... ... @@ -1894,4 +1852,77 @@ class ReceberProcedimentoRN extends InfraRN
1894 1852 InfraDebug::getInstance()->gravar($strLog);
1895 1853 }
1896 1854  
  1855 +
  1856 + /**
  1857 + * Verifica se existe documentos com pendência de download de seus componentes digitais
  1858 + * @param [type] $parNumIdProcedimento Identificador do processo
  1859 + * @param [type] $parNumIdDocumento Identificador do documento
  1860 + * @param [type] $parStrHashComponenteDigital Hash do componente digital
  1861 + * @return [type] Indicação se existe pendência ou não
  1862 + */
  1863 + private function documentosPendenteRegistro($parNumIdProcedimento, $parNumIdDocumento=null, $parStrHashComponenteDigital=null)
  1864 + {
  1865 + //Valida se algum documento ficou sem seus respectivos componentes digitais
  1866 + $sql = "select doc.id_documento as id_documento, comp.hash_conteudo as hash_conteudo
  1867 + from procedimento proc join documento doc on (doc.id_procedimento = proc.id_procedimento)
  1868 + join protocolo prot_doc on (doc.id_documento = prot_doc.id_protocolo)
  1869 + left join md_pen_componente_digital comp on (comp.id_documento = doc.id_documento)
  1870 + where proc.id_procedimento = $parNumIdProcedimento and prot_doc.sta_protocolo = 'R' and
  1871 + not exists (select 1 from anexo where anexo.id_protocolo = prot_doc.id_protocolo) ";
  1872 +
  1873 + //Adiciona filtro adicional para verificar pelo identificador do documento, caso parâmetro tenha sido informado
  1874 + if(!is_null($parNumIdDocumento)){
  1875 + $sql .= " and doc.id_documento = $parNumIdDocumento";
  1876 + }
  1877 +
  1878 + $recordset = $this->getObjInfraIBanco()->consultarSql($sql);
  1879 +
  1880 + $bolDocumentoPendente = !empty($recordset);
  1881 +
  1882 + //Verifica especificamente um determinado hash através da verificação do hash do componente, caso parâmetro tenha sido informado
  1883 + if($bolDocumentoPendente && !is_null($parStrHashComponenteDigital)) {
  1884 + foreach ($recordset as $item) {
  1885 + if(!is_null($item['hash_conteudo']) && $item['hash_conteudo'] === $parStrHashComponenteDigital){
  1886 + $bolDocumentoPendente = true;
  1887 + return $bolDocumentoPendente;
  1888 + }
  1889 + }
  1890 +
  1891 + $bolDocumentoPendente = false;
  1892 + }
  1893 +
  1894 + return $bolDocumentoPendente;
  1895 + }
  1896 +
  1897 + /**
  1898 + * Validação de pós condições para garantir que nenhuma inconsistência foi identificada no recebimento do processo
  1899 + *
  1900 + * @param [type] $parObjMetadadosProcedimento Metadados do Protocolo
  1901 + * @param [type] $parObjProcedimentoDTO Dados do Processo gerado no recebimento
  1902 + */
  1903 + private function validarPosCondicoesTramite($parObjMetadadosProcedimento, $parObjProcedimentoDTO)
  1904 + {
  1905 + $strMensagemPadrao = "Inconsistência identificada no recebimento de processo: \n";
  1906 + $strMensagemErro = "";
  1907 +
  1908 + //Valida se metadados do trâmite e do protocolo foram identificado
  1909 + if(is_null($parObjMetadadosProcedimento)){
  1910 + $strMensagemErro = "- Metadados do trâmite não identificado. \n";
  1911 + }
  1912 +
  1913 + //Valida se metadados do trâmite e do protocolo foram identificado
  1914 + if(is_null($parObjProcedimentoDTO)){
  1915 + $strMensagemErro = "- Dados do processo não identificados \n";
  1916 + }
  1917 +
  1918 + //Valida se algum documento ficou sem seus respectivos componentes digitais
  1919 + if($this->documentosPendenteRegistro($parObjProcedimentoDTO->getDblIdProcedimento())){
  1920 + $strProtocoloFormatado = $parObjProcedimentoDTO->getStrProtocoloProcedimentoFormatado();
  1921 + $strMensagemErro = "- Componente digital de pelo menos um dos documentos do processo [$strProtocoloFormatado] não pode ser recebido. \n";
  1922 + }
  1923 +
  1924 + if(!InfraString::isBolVazia($strMensagemErro)){
  1925 + throw new InfraException($strMensagemPadrao . $strMensagemErro);
  1926 + }
  1927 + }
1897 1928 }
... ...
verificar-servicos.sh
... ... @@ -1,43 +0,0 @@
1   -#!/bin/bash
2   -
3   -PATH=/usr/bin:/sbin:/bin:/usr/sbin
4   -export PATH
5   -
6   -GEARMAN=$(ls /etc/init.d | grep -owih gearman.*)
7   -if [[ -z $GEARMAN ]]; then
8   - echo "ERROR: Instalação do Gearman não pode ser localizada."
9   - exit 1
10   -else
11   - ps cax | grep -ih gearman.* > /dev/null
12   - if [ $? -ne 0 ]; then
13   - echo "Gearman: Iniciando serviço de gerenciamento de fila de tarefas..."
14   - /etc/init.d/$GEARMAN start;
15   - fi
16   -fi
17   -
18   -SUPERVISOR=$(ls /etc/init.d | grep -owih supervisor.*)
19   -if [[ -z $SUPERVISOR ]]; then
20   - echo "ERROR: Instalação do Supervisor não pode ser localizada."
21   - exit 1
22   -else
23   - ps cax | grep -ih supervisor.* > /dev/null
24   - if [ $? -ne 0 ]; then
25   - echo "Supervisor: Iniciando serviço de monitoramento dos processos de integração..."
26   - /etc/init.d/$SUPERVISOR start;
27   - else
28   -
29   - COMMAND=$(ps -C php -f | grep -o "PendenciasTramiteRN.php");
30   - if [ -z "$COMMAND" ]; then
31   - echo "Supervisor: Reiniciando serviço de monitoramento dos processos de integração..."
32   - /etc/init.d/$SUPERVISOR stop;
33   - /etc/init.d/$SUPERVISOR start;
34   - fi
35   -
36   - COMMAND=$(ps -C php -f | grep -o "ProcessarPendenciasRN.php");
37   - if [ -z "$COMMAND" ]; then
38   - echo "Supervisor: Reiniciando serviço de monitoramento dos processos de integração..."
39   - /etc/init.d/$SUPERVISOR stop;
40   - /etc/init.d/$SUPERVISOR start;
41   - fi
42   - fi
43   -fi