From 8e41eb95bc7b56c18abcdeba73b0aa6a71cb5527 Mon Sep 17 00:00:00 2001 From: Mauro Costa Date: Fri, 24 Mar 2023 11:16:18 -0300 Subject: [PATCH 01/17] =?UTF-8?q?feat:=20corre=C3=A7=C3=A3o=20documento=20?= =?UTF-8?q?movimentado=20para=20novo=20processo=20e=20depois=20movimentado?= =?UTF-8?q?=20novamente=20para=20o=20processo=20original?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/rn/ExpedirProcedimentoRN.php | 13 +++++++++++-- src/rn/ProcessoEletronicoRN.php | 4 ++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/rn/ExpedirProcedimentoRN.php b/src/rn/ExpedirProcedimentoRN.php index bb973b5a2..13d9f7882 100755 --- a/src/rn/ExpedirProcedimentoRN.php +++ b/src/rn/ExpedirProcedimentoRN.php @@ -2040,8 +2040,17 @@ private function enviarComponentesDigitais($strNumeroRegistro, $numIdTramite, $s //$objDocumentoDTO = $this->consultarDocumento($objComponenteDigitalDTO->getDblIdDocumento()); $arrObjDocumentoDTOAssociacao = $this->listarDocumentosRelacionados($objComponenteDigitalDTO->getDblIdProcedimento(), $objComponenteDigitalDTO->getDblIdDocumento()); - $objDocumentoDTO = count($arrObjDocumentoDTOAssociacao) == 1 ? $arrObjDocumentoDTOAssociacao[0]['Documento'] : null; - $strStaAssociacao = count($arrObjDocumentoDTOAssociacao) == 1 ? $arrObjDocumentoDTOAssociacao[0]['StaAssociacao'] : null; + $objDocumentoDTO = null; + $strStaAssociacao = null; + $bolMultiplosComponentesCount = 0; + foreach ($arrObjDocumentoDTOAssociacao as $objDocumentoDTOAssociacao) { + $strStaAssociacao = $objDocumentoDTOAssociacao['StaAssociacao']; + if($strStaAssociacao != RelProtocoloProtocoloRN::$TA_DOCUMENTO_MOVIDO){ + $objDocumentoDTO = $objDocumentoDTOAssociacao['Documento']; + $bolMultiplosComponentesCount++; + } + } + $bolMultiplosComponentes = $bolMultiplosComponentesCount > 1; $strNomeDocumento = $this->consultarNomeDocumentoPEN($objDocumentoDTO); //Verifica se existe o objeto anexoDTO para recuperar informações do arquivo diff --git a/src/rn/ProcessoEletronicoRN.php b/src/rn/ProcessoEletronicoRN.php index 47b7e8eb9..e77cecbb2 100755 --- a/src/rn/ProcessoEletronicoRN.php +++ b/src/rn/ProcessoEletronicoRN.php @@ -1125,7 +1125,7 @@ private function montarDadosComponenteDigital($parStrNumeroRegistro, $parNumIden $arrObjDocumento = self::obterDocumentosProtocolo($parObjProtocolo, true); $arrObjComponenteDigitalDTOAux = array(); - foreach ($arrObjDocumento as $objDocumento) { + foreach ($arrObjDocumento as $key => $objDocumento) { $quantidadeDeComponentesDigitais = count($objDocumento->componenteDigital); if($quantidadeDeComponentesDigitais > 1){ $arrObjComponenteDigitalDTOAux = self::montarDadosMaisDeUmComponenteDigital($objDocumento, $parStrNumeroRegistro, $parNumIdentificacaoTramite, $parObjProtocolo, $parObjComponentesDigitaisSolicitados); @@ -1136,7 +1136,7 @@ private function montarDadosComponenteDigital($parStrNumeroRegistro, $parNumIden $objComponenteDigitalDTO->setDblIdProcedimento($parObjProtocolo->idProcedimentoSEI); $objComponenteDigitalDTO->setDblIdDocumento($objDocumento->idDocumentoSEI); $objComponenteDigitalDTO->setNumOrdemDocumento($objDocumento->ordem); - $objComponenteDigitalDTO->setNumOrdem(1); + $objComponenteDigitalDTO->setNumOrdem($key + 1); $objComponenteDigitalDTO->setNumIdTramite($parNumIdentificacaoTramite); $objComponenteDigitalDTO->setStrProtocolo($parObjProtocolo->protocolo); From f21ea7ccf98b16dacd9da88ac0063ffb2899f044 Mon Sep 17 00:00:00 2001 From: Mauro Costa Date: Thu, 27 Apr 2023 17:25:18 -0300 Subject: [PATCH 02/17] =?UTF-8?q?feat:=20impementa=C3=A7=C3=A3o=20inicial?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/bd/PenUnidadeRestricaoBD.php | 12 ++ src/dto/PenUnidadeRestricaoDTO.php | 42 ++++ src/int/ProcessoEletronicoINT.php | 196 ++++++++++++++++++ src/pen_map_unidade_cadastrar.php | 57 +++-- src/rn/PenUnidadeRestricaoRN.php | 129 ++++++++++++ .../sei_atualizar_versao_modulo_pen.php | 41 +++- 6 files changed, 453 insertions(+), 24 deletions(-) create mode 100755 src/bd/PenUnidadeRestricaoBD.php create mode 100755 src/dto/PenUnidadeRestricaoDTO.php create mode 100755 src/rn/PenUnidadeRestricaoRN.php diff --git a/src/bd/PenUnidadeRestricaoBD.php b/src/bd/PenUnidadeRestricaoBD.php new file mode 100755 index 000000000..a24240305 --- /dev/null +++ b/src/bd/PenUnidadeRestricaoBD.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/src/dto/PenUnidadeRestricaoDTO.php b/src/dto/PenUnidadeRestricaoDTO.php new file mode 100755 index 000000000..83a7c5f65 --- /dev/null +++ b/src/dto/PenUnidadeRestricaoDTO.php @@ -0,0 +1,42 @@ +adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUnidade', 'id_unidade'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUnidadeRH', 'id_unidade_rh'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUnidadeRestricao', 'id_unidade_restricao'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'NomeUnidadeRestricao', 'nome_unidade_restricao'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUnidadeRHRestricao', 'id_unidade_rh_restricao'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'NomeUnidadeRHRestricao', 'nome_unidade_rh_restricao'); + $this->configurarPK('Id', InfraDTO::$TIPO_PK_INFORMADO); + + $this->configurarFK('IdUnidade', 'unidade', 'id_unidade'); + } +} diff --git a/src/int/ProcessoEletronicoINT.php b/src/int/ProcessoEletronicoINT.php index d9d484d0c..0bbf8ddfe 100755 --- a/src/int/ProcessoEletronicoINT.php +++ b/src/int/ProcessoEletronicoINT.php @@ -186,4 +186,200 @@ public static function getCssCompatibilidadeSEI4($arquivo) return $arquivo; } + + public static function montarRestricaoOrgaoUnidade($numIdTipoProcedimento, $numIdSerie, &$strCss, &$strHtml, &$strJsGlobal, &$strJsInicializar) + { + if ($numIdTipoProcedimento != null) { + + $objTipoProcedRestricaoDTO = new TipoProcedRestricaoDTO(); + $objTipoProcedRestricaoDTO->setDistinct(true); + $objTipoProcedRestricaoDTO->retNumIdOrgao(); + $objTipoProcedRestricaoDTO->retStrSiglaOrgao(); + $objTipoProcedRestricaoDTO->setNumIdTipoProcedimento($numIdTipoProcedimento); + $objTipoProcedRestricaoDTO->setOrdStrSiglaOrgao(InfraDTO::$TIPO_ORDENACAO_ASC); + + $objTipoProcedRestricaoRN = new TipoProcedRestricaoRN(); + $arrObjTipoProcedRestricaoDTO = $objTipoProcedRestricaoRN->listar($objTipoProcedRestricaoDTO); + + $strItensSelOrgaosRestricao = parent::montarSelectArrInfraDTO(null, null, null, $arrObjTipoProcedRestricaoDTO, 'IdOrgao', 'SiglaOrgao'); + + $objTipoProcedRestricaoDTO = new TipoProcedRestricaoDTO(); + $objTipoProcedRestricaoDTO->retNumIdOrgao(); + $objTipoProcedRestricaoDTO->retNumIdUnidade(); + $objTipoProcedRestricaoDTO->retStrSiglaUnidade(); + $objTipoProcedRestricaoDTO->retStrDescricaoUnidade(); + $objTipoProcedRestricaoDTO->setNumIdTipoProcedimento($numIdTipoProcedimento); + $objTipoProcedRestricaoDTO->setNumTipoFkUnidade(InfraDTO::$TIPO_FK_OBRIGATORIA); + $objTipoProcedRestricaoDTO->setOrdStrSiglaUnidade(InfraDTO::$TIPO_ORDENACAO_ASC); + + $arrObjRestricaoDTO = InfraArray::indexarArrInfraDTO($objTipoProcedRestricaoRN->listar($objTipoProcedRestricaoDTO), 'IdOrgao', true); + } else if ($numIdSerie != null) { + + $objSerieRestricaoDTO = new SerieRestricaoDTO(); + $objSerieRestricaoDTO->setDistinct(true); + $objSerieRestricaoDTO->retNumIdOrgao(); + $objSerieRestricaoDTO->retStrSiglaOrgao(); + $objSerieRestricaoDTO->setNumIdSerie($numIdSerie); + $objSerieRestricaoDTO->setOrdStrSiglaOrgao(InfraDTO::$TIPO_ORDENACAO_ASC); + + $objSerieRestricaoRN = new SerieRestricaoRN(); + $arrObjSerieRestricaoDTO = $objSerieRestricaoRN->listar($objSerieRestricaoDTO); + + $strItensSelOrgaosRestricao = parent::montarSelectArrInfraDTO(null, null, null, $arrObjSerieRestricaoDTO, 'IdOrgao', 'SiglaOrgao'); + + $objSerieRestricaoDTO = new SerieRestricaoDTO(); + $objSerieRestricaoDTO->retNumIdOrgao(); + $objSerieRestricaoDTO->retNumIdUnidade(); + $objSerieRestricaoDTO->retStrSiglaUnidade(); + $objSerieRestricaoDTO->retStrDescricaoUnidade(); + $objSerieRestricaoDTO->setNumIdSerie($numIdSerie); + $objSerieRestricaoDTO->setNumTipoFkUnidade(InfraDTO::$TIPO_FK_OBRIGATORIA); + $objSerieRestricaoDTO->setOrdStrSiglaUnidade(InfraDTO::$TIPO_ORDENACAO_ASC); + + $arrObjRestricaoDTO = InfraArray::indexarArrInfraDTO($objSerieRestricaoRN->listar($objSerieRestricaoDTO), 'IdOrgao', true); + } + + $objOrgaoDTO = new OrgaoDTO(); + $objOrgaoDTO->setBolExclusaoLogica(false); + $objOrgaoDTO->retNumIdOrgao(); + + $objOrgaoRN = new OrgaoRN(); + $arrObjOrgaoDTO = $objOrgaoRN->listarRN1353($objOrgaoDTO); + $strHtmlOrgaoUnidades = ''; + foreach ($arrObjOrgaoDTO as $objOrgaoDTO) { + + $numIdOrgao = $objOrgaoDTO->getNumIdOrgao(); + + $strValor = ''; + if (isset($arrObjRestricaoDTO[$numIdOrgao])) { + $arr = array(); + foreach ($arrObjRestricaoDTO[$numIdOrgao] as $objResticaoDTO) { + $arr[] = array($objResticaoDTO->getNumIdUnidade(), UnidadeINT::formatarSiglaDescricao($objResticaoDTO->getStrSiglaUnidade(), $objResticaoDTO->getStrDescricaoUnidade())); + } + $strValor = PaginaSEI::getInstance()->gerarItensLupa($arr); + } + + $strHtmlOrgaoUnidades .= '' . "\n"; + $strHtmlOrgaoUnidades .= '' . "\n"; + } + + $strCss = '' + . ' #lblOrgaos {position:absolute;left:0%;top:0%;width:20%;}' + . ' #txtOrgao {position:absolute;left:0%;top:13%;width:19.5%;}' + . ' #selOrgaos {position:absolute;left:0%;top:29%;width:20%;}' + . ' #divOpcoesOrgaos {position:absolute;left:21%;top:29%;}' + . ' ' + . ' #lblUnidades {position:absolute;left:25%;top:0%;}' + . ' #txtUnidade {position:absolute;left:25%;top:13%;width:54.5%;}' + . ' #selUnidades {position:absolute;left:25%;top:29%;width:55%;}' + . ' #divOpcoesUnidades {position:absolute;left:81%;top:29%;}'; + + $strJsGlobal = '' + . ' var objLupaOrgaos = null;' + . ' var objAutoCompletarOrgao = null;' + . ' var objLupaUnidades = null;' + . ' var objAutoCompletarUnidade = null;' + . ' ' + . ' function trocarOrgaoRestricao(){' + . ' document.getElementById(\'hdnUnidades\').value = document.getElementById(\'hdnOrgao\' + document.getElementById(\'selOrgaos\').value).value;' + . ' objLupaUnidades.montar();' + . ' }'; + + $strJsInicializar = '' + . ' objLupaOrgaos = new infraLupaSelect(\'selOrgaos\',\'hdnOrgaos\',\'' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=orgao_selecionar&tipo_selecao=2&id_object=objLupaOrgaos') . '\');' + . ' objLupaOrgaos.processarRemocao = function(itens){' + . ' objLupaUnidades.limpar();' + . ' for(var i=0;i < itens.length;i++){' + . ' document.getElementById(\'hdnOrgao\' + itens[i].value).value = \'\';' + . ' }' + . ' return true;' + . ' }' + . ' ' + . ' objLupaOrgaos.finalizarSelecao = function(){' + . ' objLupaUnidades.limpar();' + . ' }' + . ' ' + . ' objAutoCompletarOrgao = new infraAjaxAutoCompletar(\'hdnIdOrgao\',\'txtOrgao\',\'' . SessaoSEI::getInstance()->assinarLink('controlador_ajax.php?acao_ajax=orgao_auto_completar') . '\');' + . ' objAutoCompletarOrgao.limparCampo = true;' + . ' objAutoCompletarOrgao.prepararExecucao = function(){' + . ' return \'palavras_pesquisa=\'+document.getElementById(\'txtOrgao\').value;' + . ' };' + . ' ' + . ' objAutoCompletarOrgao.processarResultado = function(id,descricao,complemento){' + . ' if (id!=\'\'){' + . ' objLupaOrgaos.adicionar(id,descricao,document.getElementById(\'txtOrgao\'));' + . ' objLupaUnidades.limpar();' + . ' }' + . ' };' + . ' ' + . ' objLupaUnidades = new infraLupaSelect(\'selUnidades\',\'hdnUnidades\',\'\');' + . ' objLupaUnidades.validarSelecionar = function(){' + . ' if (document.getElementById(\'selOrgaos\').selectedIndex==-1){' + . ' alert(\'Nenhum Órgão selecionado.\');' + . ' return false;' + . ' }' + . ' objLupaUnidades.url = document.getElementById(\'lnkOrgao\' + document.getElementById(\'selOrgaos\').value).value;' + . ' return true;' + . ' }' + . ' ' + . ' objLupaUnidades.finalizarRemocao = function(){' + . ' document.getElementById(\'hdnOrgao\' + document.getElementById(\'selOrgaos\').value).value = document.getElementById(\'hdnUnidades\').value;' + . ' return true;' + . ' }' + . ' ' + . ' objLupaUnidades.finalizarSelecao = function(){' + . ' document.getElementById(\'hdnOrgao\' + document.getElementById(\'selOrgaos\').value).value = document.getElementById(\'hdnUnidades\').value;' + . ' }' + . ' ' + . ' objAutoCompletarUnidade = new infraAjaxAutoCompletar(\'hdnIdUnidade\',\'txtUnidade\',\'' . SessaoSEI::getInstance()->assinarLink('controlador_ajax.php?acao_ajax=unidade_auto_completar_todas') . '\');' + . ' objAutoCompletarUnidade.limparCampo = true;' + . ' objAutoCompletarUnidade.prepararExecucao = function(){' + . ' if (document.getElementById(\'selOrgaos\').selectedIndex==-1){' + . ' alert(\'Nenhum Órgão selecionado.\');' + . ' return false;' + . ' }' + . ' return \'palavras_pesquisa=\'+document.getElementById(\'txtUnidade\').value+\'&id_orgao=\'+document.getElementById(\'selOrgaos\').value;' + . ' };' + . ' ' + . ' objAutoCompletarUnidade.processarResultado = function(id,descricao,complemento){' + . ' if (id!=\'\'){' + . ' objLupaUnidades.adicionar(id,descricao,document.getElementById(\'txtUnidade\'));' + . ' document.getElementById(\'hdnOrgao\' + document.getElementById(\'selOrgaos\').value).value = document.getElementById(\'hdnUnidades\').value;' + . ' }' + . ' };' + . ' ' + . ' if (document.getElementById(\'selOrgaos\').options.length){' + . ' document.getElementById(\'selOrgaos\').disabled = false;' + . ' document.getElementById(\'selOrgaos\').options[0].selected = true;' + . ' trocarOrgaoRestricao();' + . ' }'; + + $strHtml = '' + . '
' + . ' ' + . ' ' + . ' ' + . ' ' + . '
' + . ' Selecionar Órgãos' + . '
' + . ' Remover Órgãos Selecionados' + . '
' + . ' ' + . ' ' + . ' ' + . ' ' + . ' ' + . '
' + . ' Selecionar Unidades' + . '
' + . ' Remover Unidades Selecionadas' + . '
' + . ' ' + . ' ' . $strHtmlOrgaoUnidades . '' + . '
'; + } } diff --git a/src/pen_map_unidade_cadastrar.php b/src/pen_map_unidade_cadastrar.php index 1e91cfdce..346f0e794 100755 --- a/src/pen_map_unidade_cadastrar.php +++ b/src/pen_map_unidade_cadastrar.php @@ -152,6 +152,8 @@ $strNomeUnidadeSelecionada = 'Unidade não encontrada.'; } } + + ProcessoEletronicoINT::montarRestricaoOrgaoUnidade(null, null, $strCssRestricao, $strHtmlRestricao, $strJsGlobalRestricao, $strJsInicializarRestricao); } catch (InfraException $e) { $objPagina->processarExcecao($e); @@ -182,14 +184,44 @@ #txtUnidadePen{position:absolute;left:0%;top:53%;width:60%;} #btnUnidadeRh2{position:absolute;left:61%;top:53%;} + + +fecharHead(); +$objPagina->abrirBody($strTitulo, 'onload="inicializar();"'); +?> +
+ montarBarraComandosSuperior($arrComandos); ?> + montarAreaValidacao(); ?> + abrirAreaDados('15em'); ?> + + + + + + + + + fecharAreaDados(); ?> + + abrirAreaDados('15em'); ?> + + fecharAreaDados(); ?> +
+fecharBody(); ?> montarJavaScript(); ?> -fecharHead(); -$objPagina->abrirBody($strTitulo, 'onload="inicializar();"'); -?> -
- montarBarraComandosSuperior($arrComandos); ?> - montarAreaValidacao(); ?> - abrirAreaDados('15em'); ?> - - - + - - - - - - fecharAreaDados(); ?> -
-fecharBody(); ?> + fecharHtml(); ?> diff --git a/src/rn/PenUnidadeRestricaoRN.php b/src/rn/PenUnidadeRestricaoRN.php new file mode 100755 index 000000000..dd35531ab --- /dev/null +++ b/src/rn/PenUnidadeRestricaoRN.php @@ -0,0 +1,129 @@ +setDistinct(true); + $objDTO->retNumIdUnidade(); + + if ($objFiltroDTO->isSetNumIdUnidade()) { + $objDTO->setNumIdUnidade($objFiltroDTO->getNumIdUnidade(), InfraDTO::$OPER_DIFERENTE); + } + + $arrObjDTO = $this->listar($objDTO); + + $arrIdUnidade = array(); + + if (!empty($arrObjDTO)) { + $arrIdUnidade = InfraArray::converterArrInfraDTO($arrObjDTO, 'IdUnidade'); + } + return $arrIdUnidade; + } + + /** + * Método utilizado para listagem de dados. + * @param UnidadeDTO $objUnidadeDTO + * @return array + * @throws InfraException + */ + protected function listarConectado(UnidadeDTO $objPenUnidadeDTO) + { + try { + //Valida Permissao + SessaoSEI::getInstance()->validarAuditarPermissao('pen_map_unidade_listar', __METHOD__, $objUnidadeDTO); + $objPenUnidadeBD = new PenUnidadeBD($this->getObjInfraIBanco()); + return $objPenUnidadeBD->listar($objPenUnidadeDTO); + } catch (Exception $e) { + throw new InfraException('Erro listando Unidades.', $e); + } + } + + /** + * Método utilizado para alteração de dados. + * @param UnidadeDTO $objDTO + * @return array + * @throws InfraException + */ + protected function alterarControlado(UnidadeDTO $objPenUnidadeDTO) + { + try { + $objPenUnidadeBD = new PenUnidadeBD(BancoSEI::getInstance()); + return $objPenUnidadeBD->alterar($objPenUnidadeDTO); + } catch (Exception $e) { + throw new InfraException('Erro alterando mapeamento de unidades.', $e); + } + } + + /** + * Método utilizado para cadastro de dados. + * @param UnidadeDTO $objDTO + * @return array + * @throws InfraException + */ + protected function cadastrarConectado(UnidadeDTO $objDTO) + { + try { + $objBD = new PenUnidadeBD(BancoSEI::getInstance()); + return $objBD->cadastrar($objDTO); + } catch (Exception $e) { + throw new InfraException('Erro cadastrando mapeamento de unidades.', $e); + } + } + + /** + * Método utilizado para exclusão de dados. + * @param UnidadeDTO $objDTO + * @return array + * @throws InfraException + */ + protected function excluirControlado(UnidadeDTO $objDTO) + { + try { + $objBD = new PenUnidadeBD(BancoSEI::getInstance()); + return $objBD->excluir($objDTO); + } catch (Exception $e) { + throw new InfraException('Erro excluindo mapeamento de unidades.', $e); + } + } + + /** + * Método utilizado para contagem de unidades mapeadas + * @param UnidadeDTO $objUnidadeDTO + * @return array + * @throws InfraException + */ + protected function contarConectado(PenUnidadeDTO $objPenUnidadeDTO) + { + try { + //Valida Permissao + $objPenUnidadeBD = new PenUnidadeBD($this->getObjInfraIBanco()); + return $objPenUnidadeBD->contar($objPenUnidadeDTO); + } catch (Exception $e) { + throw new InfraException('Erro contando mapeamento de unidades.', $e); + } + } +} diff --git a/src/scripts/sei_atualizar_versao_modulo_pen.php b/src/scripts/sei_atualizar_versao_modulo_pen.php index 7f7ca73c0..96b8d782d 100755 --- a/src/scripts/sei_atualizar_versao_modulo_pen.php +++ b/src/scripts/sei_atualizar_versao_modulo_pen.php @@ -261,8 +261,9 @@ protected function atualizarVersaoConectado() $this->instalarV3023(); case '3.2.3': $this->instalarV3024(); + case '3.2.4': + $this->instalarV3025(); - break; // Ausência de [break;] proposital para realizar a atualização incremental de versões default: $this->finalizar('VERSAO DO MÓDULO JÁ CONSTA COMO ATUALIZADA'); @@ -2489,6 +2490,44 @@ protected function instalarV3024(){ $this->atualizarNumeroVersao("3.2.4"); } + protected function instalarV3025(): void + { + $this->atualizarNumeroVersao("3.2.5"); + $objMetaBD = $this->objMeta; + // Remoção de coluna sin_padrao da tabela md_pen_rel_doc_map_enviado + $this->logar("CRIANDO TABELA DE CONFIGURACAO PARA RESTRICAO "); + $objMetaBD->criarTabela(array( + 'tabela' => 'md_pen_unidade_restricao', + 'cols' => array( + 'id' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), + 'id_unidade' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), + 'id_unidade_rh' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), + 'id_unidade_restricao' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::SNULLO), + 'nome_unidade_restricao' => array($objMetaBD->tipoTextoVariavel(255), PenMetaBD::SNULLO), + 'id_unidade_rh_restricao' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::SNULLO), + 'nome_unidade_rh_restricao' => array($objMetaBD->tipoTextoVariavel(255), PenMetaBD::SNULLO), + ), + 'pk' => array('cols' => array('id')), + 'fks' => array( + 'unidade' => array('id_unidade', 'id_unidade') + ) + )); + + // Criando nova sequência + $objInfraBanco = BancoSEI::getInstance(); + $objInfraSequencia = new InfraSequencia($objInfraBanco); + if (!$objInfraSequencia->verificarSequencia('md_pen_unidade_restricao')) { + $objInfraSequencia->criarSequencia('md_pen_unidade_restricao', '1', '1', '9999999999'); + } + //Sequência: md_pen_seq_unidade_restricao + $rs = BancoSEI::getInstance()->consultarSql('select max(id) as total from md_pen_unidade_restricao'); + $numMaxId = $rs[0]['total']; + if ($numMaxId == null) { + $numMaxId = 0; + } + BancoSEI::getInstance()->criarSequencialNativa('md_pen_seq_unidade_restricao', $numMaxId + 1); + } + } From eb8b51f58c77cbdb48701a8a01dcdb4bd13dc500 Mon Sep 17 00:00:00 2001 From: Mauro Costa Date: Thu, 27 Apr 2023 22:41:43 -0300 Subject: [PATCH 03/17] feat: segunda parte com filtro de repositorio de estruturas organizacionais --- src/PENIntegracao.php | 8 ++ src/int/ProcessoEletronicoINT.php | 195 +++++++++++------------------- src/pen_map_unidade_cadastrar.php | 6 +- 3 files changed, 79 insertions(+), 130 deletions(-) diff --git a/src/PENIntegracao.php b/src/PENIntegracao.php index e0e859eb5..b0449ce6e 100755 --- a/src/PENIntegracao.php +++ b/src/PENIntegracao.php @@ -487,7 +487,15 @@ public function processarControladorAjax($strAcao) { $xml = null; switch ($_GET['acao_ajax']) { + case 'pen_listar_repositorios_estruturas_auto_completar': + $arrObjEstruturaDTO = (array) ProcessoEletronicoINT::autoCompletarRepositorioEstruturas($_POST['palavras_pesquisa']); + if (count($arrObjEstruturaDTO) > 0) { + $xml = InfraAjax::gerarXMLItensArrInfraDTO($arrObjEstruturaDTO, 'Id', 'Nome'); + } else { + return ''; + } + break; case 'pen_unidade_auto_completar_expedir_procedimento': $bolPermiteEnvio = false; if ($_GET['acao'] != 'pen_procedimento_expedir') { diff --git a/src/int/ProcessoEletronicoINT.php b/src/int/ProcessoEletronicoINT.php index 0bbf8ddfe..6f2c403ce 100755 --- a/src/int/ProcessoEletronicoINT.php +++ b/src/int/ProcessoEletronicoINT.php @@ -56,6 +56,19 @@ public static function autoCompletarEstruturas($idRepositorioEstrutura, $strPala return static::gerarHierarquiaEstruturas($arrObjEstruturas); } + public static function autoCompletarRepositorioEstruturas($strPalavrasPesquisa) + { + $objProcessoEletronicoRN = new ProcessoEletronicoRN(); + $arrObjRepositorioDTO = (array) $objProcessoEletronicoRN->listarRepositoriosDeEstruturas(); + $arrayRepositorioEstruturas = array(); + foreach ($arrObjRepositorioDTO as $value) { + if (strpos(strtoupper($value->getStrNome()), strtoupper($strPalavrasPesquisa)) !== false) { + $arrayRepositorioEstruturas[] = $value; + } + } + return $arrayRepositorioEstruturas; + } + public static function autoCompletarProcessosApensados($dblIdProcedimentoAtual, $numIdUnidadeAtual, $strPalavrasPesquisa) { $objExpedirProcedimentoRN = new ExpedirProcedimentoRN(); return $objExpedirProcedimentoRN->listarProcessosApensados($dblIdProcedimentoAtual, $numIdUnidadeAtual, $strPalavrasPesquisa); @@ -187,87 +200,13 @@ public static function getCssCompatibilidadeSEI4($arquivo) return $arquivo; } - public static function montarRestricaoOrgaoUnidade($numIdTipoProcedimento, $numIdSerie, &$strCss, &$strHtml, &$strJsGlobal, &$strJsInicializar) + public static function montarRestricaoOrgaoUnidade(&$strCss, &$strHtml, &$strJsGlobal, &$strJsInicializar) { - if ($numIdTipoProcedimento != null) { - - $objTipoProcedRestricaoDTO = new TipoProcedRestricaoDTO(); - $objTipoProcedRestricaoDTO->setDistinct(true); - $objTipoProcedRestricaoDTO->retNumIdOrgao(); - $objTipoProcedRestricaoDTO->retStrSiglaOrgao(); - $objTipoProcedRestricaoDTO->setNumIdTipoProcedimento($numIdTipoProcedimento); - $objTipoProcedRestricaoDTO->setOrdStrSiglaOrgao(InfraDTO::$TIPO_ORDENACAO_ASC); - - $objTipoProcedRestricaoRN = new TipoProcedRestricaoRN(); - $arrObjTipoProcedRestricaoDTO = $objTipoProcedRestricaoRN->listar($objTipoProcedRestricaoDTO); - - $strItensSelOrgaosRestricao = parent::montarSelectArrInfraDTO(null, null, null, $arrObjTipoProcedRestricaoDTO, 'IdOrgao', 'SiglaOrgao'); - - $objTipoProcedRestricaoDTO = new TipoProcedRestricaoDTO(); - $objTipoProcedRestricaoDTO->retNumIdOrgao(); - $objTipoProcedRestricaoDTO->retNumIdUnidade(); - $objTipoProcedRestricaoDTO->retStrSiglaUnidade(); - $objTipoProcedRestricaoDTO->retStrDescricaoUnidade(); - $objTipoProcedRestricaoDTO->setNumIdTipoProcedimento($numIdTipoProcedimento); - $objTipoProcedRestricaoDTO->setNumTipoFkUnidade(InfraDTO::$TIPO_FK_OBRIGATORIA); - $objTipoProcedRestricaoDTO->setOrdStrSiglaUnidade(InfraDTO::$TIPO_ORDENACAO_ASC); - - $arrObjRestricaoDTO = InfraArray::indexarArrInfraDTO($objTipoProcedRestricaoRN->listar($objTipoProcedRestricaoDTO), 'IdOrgao', true); - } else if ($numIdSerie != null) { - - $objSerieRestricaoDTO = new SerieRestricaoDTO(); - $objSerieRestricaoDTO->setDistinct(true); - $objSerieRestricaoDTO->retNumIdOrgao(); - $objSerieRestricaoDTO->retStrSiglaOrgao(); - $objSerieRestricaoDTO->setNumIdSerie($numIdSerie); - $objSerieRestricaoDTO->setOrdStrSiglaOrgao(InfraDTO::$TIPO_ORDENACAO_ASC); - - $objSerieRestricaoRN = new SerieRestricaoRN(); - $arrObjSerieRestricaoDTO = $objSerieRestricaoRN->listar($objSerieRestricaoDTO); - - $strItensSelOrgaosRestricao = parent::montarSelectArrInfraDTO(null, null, null, $arrObjSerieRestricaoDTO, 'IdOrgao', 'SiglaOrgao'); - - $objSerieRestricaoDTO = new SerieRestricaoDTO(); - $objSerieRestricaoDTO->retNumIdOrgao(); - $objSerieRestricaoDTO->retNumIdUnidade(); - $objSerieRestricaoDTO->retStrSiglaUnidade(); - $objSerieRestricaoDTO->retStrDescricaoUnidade(); - $objSerieRestricaoDTO->setNumIdSerie($numIdSerie); - $objSerieRestricaoDTO->setNumTipoFkUnidade(InfraDTO::$TIPO_FK_OBRIGATORIA); - $objSerieRestricaoDTO->setOrdStrSiglaUnidade(InfraDTO::$TIPO_ORDENACAO_ASC); - - $arrObjRestricaoDTO = InfraArray::indexarArrInfraDTO($objSerieRestricaoRN->listar($objSerieRestricaoDTO), 'IdOrgao', true); - } - - $objOrgaoDTO = new OrgaoDTO(); - $objOrgaoDTO->setBolExclusaoLogica(false); - $objOrgaoDTO->retNumIdOrgao(); - - $objOrgaoRN = new OrgaoRN(); - $arrObjOrgaoDTO = $objOrgaoRN->listarRN1353($objOrgaoDTO); - $strHtmlOrgaoUnidades = ''; - foreach ($arrObjOrgaoDTO as $objOrgaoDTO) { - - $numIdOrgao = $objOrgaoDTO->getNumIdOrgao(); - - $strValor = ''; - if (isset($arrObjRestricaoDTO[$numIdOrgao])) { - $arr = array(); - foreach ($arrObjRestricaoDTO[$numIdOrgao] as $objResticaoDTO) { - $arr[] = array($objResticaoDTO->getNumIdUnidade(), UnidadeINT::formatarSiglaDescricao($objResticaoDTO->getStrSiglaUnidade(), $objResticaoDTO->getStrDescricaoUnidade())); - } - $strValor = PaginaSEI::getInstance()->gerarItensLupa($arr); - } - - $strHtmlOrgaoUnidades .= '' . "\n"; - $strHtmlOrgaoUnidades .= '' . "\n"; - } - $strCss = '' - . ' #lblOrgaos {position:absolute;left:0%;top:0%;width:20%;}' - . ' #txtOrgao {position:absolute;left:0%;top:13%;width:19.5%;}' - . ' #selOrgaos {position:absolute;left:0%;top:29%;width:20%;}' - . ' #divOpcoesOrgaos {position:absolute;left:21%;top:29%;}' + . ' #lblRepoEstruturas {position:absolute;left:0%;top:0%;width:20%;}' + . ' #txtRepoEstruturas {position:absolute;left:0%;top:13%;width:19.5%;}' + . ' #selRepoEstruturas {position:absolute;left:0%;top:29%;width:20%;}' + . ' #divOpcoesRepoEstruturas {position:absolute;left:21%;top:29%;}' . ' ' . ' #lblUnidades {position:absolute;left:25%;top:0%;}' . ' #txtUnidade {position:absolute;left:25%;top:13%;width:54.5%;}' @@ -275,39 +214,39 @@ public static function montarRestricaoOrgaoUnidade($numIdTipoProcedimento, $numI . ' #divOpcoesUnidades {position:absolute;left:81%;top:29%;}'; $strJsGlobal = '' - . ' var objLupaOrgaos = null;' + . ' var objLupaRepositoriosEstruturas = null;' . ' var objAutoCompletarOrgao = null;' . ' var objLupaUnidades = null;' . ' var objAutoCompletarUnidade = null;' . ' ' . ' function trocarOrgaoRestricao(){' - . ' document.getElementById(\'hdnUnidades\').value = document.getElementById(\'hdnOrgao\' + document.getElementById(\'selOrgaos\').value).value;' + . ' document.getElementById(\'hdnUnidades\').value = document.getElementById(\'hdnRepoEstruturas\' + document.getElementById(\'selRepoEstruturas\').value).value;' . ' objLupaUnidades.montar();' - . ' }'; + . ' };'; $strJsInicializar = '' - . ' objLupaOrgaos = new infraLupaSelect(\'selOrgaos\',\'hdnOrgaos\',\'' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=orgao_selecionar&tipo_selecao=2&id_object=objLupaOrgaos') . '\');' - . ' objLupaOrgaos.processarRemocao = function(itens){' + . ' objLupaRepositoriosEstruturas = new infraLupaSelect(\'selRepoEstruturas\',\'hdnRepoEstruturas\',\'' . /*SessaoSEI::getInstance()->assinarLink('controlador.php?acao=orgao_selecionar&tipo_selecao=2&id_object=objLupaRepositoriosEstruturas') .*/ '\');' + . ' objLupaRepositoriosEstruturas.processarRemocao = function(itens){' . ' objLupaUnidades.limpar();' . ' for(var i=0;i < itens.length;i++){' - . ' document.getElementById(\'hdnOrgao\' + itens[i].value).value = \'\';' + . ' document.getElementById(\'hdnRepoEstruturas\' + itens[i].value).value = \'\';' . ' }' . ' return true;' - . ' }' + . ' };' . ' ' - . ' objLupaOrgaos.finalizarSelecao = function(){' + . ' objLupaRepositoriosEstruturas.finalizarSelecao = function(){' . ' objLupaUnidades.limpar();' - . ' }' + . ' };' . ' ' - . ' objAutoCompletarOrgao = new infraAjaxAutoCompletar(\'hdnIdOrgao\',\'txtOrgao\',\'' . SessaoSEI::getInstance()->assinarLink('controlador_ajax.php?acao_ajax=orgao_auto_completar') . '\');' - . ' objAutoCompletarOrgao.limparCampo = true;' - . ' objAutoCompletarOrgao.prepararExecucao = function(){' - . ' return \'palavras_pesquisa=\'+document.getElementById(\'txtOrgao\').value;' + . ' objAutoCompletarRepoEstruturas = new infraAjaxAutoCompletar(\'hdnIdRepoEstruturas\',\'txtRepoEstruturas\',\'' . SessaoSEI::getInstance()->assinarLink('controlador_ajax.php?acao_ajax=pen_listar_repositorios_estruturas_auto_completar') . '\');' + . ' objAutoCompletarRepoEstruturas.limparCampo = true;' + . ' objAutoCompletarRepoEstruturas.prepararExecucao = function(){' + . ' return \'palavras_pesquisa=\'+document.getElementById(\'txtRepoEstruturas\').value;' . ' };' . ' ' - . ' objAutoCompletarOrgao.processarResultado = function(id,descricao,complemento){' + . ' objAutoCompletarRepoEstruturas.processarResultado = function(id,descricao,complemento){' . ' if (id!=\'\'){' - . ' objLupaOrgaos.adicionar(id,descricao,document.getElementById(\'txtOrgao\'));' + . ' objLupaRepositoriosEstruturas.adicionar(id,descricao,document.getElementById(\'txtRepoEstruturas\'));' . ' objLupaUnidades.limpar();' . ' }' . ' };' @@ -315,71 +254,73 @@ public static function montarRestricaoOrgaoUnidade($numIdTipoProcedimento, $numI . ' objLupaUnidades = new infraLupaSelect(\'selUnidades\',\'hdnUnidades\',\'\');' . ' objLupaUnidades.validarSelecionar = function(){' . ' if (document.getElementById(\'selOrgaos\').selectedIndex==-1){' - . ' alert(\'Nenhum Órgão selecionado.\');' + . ' alert(\'Nenhum RepoEstruturas selecionado.\');' . ' return false;' . ' }' - . ' objLupaUnidades.url = document.getElementById(\'lnkOrgao\' + document.getElementById(\'selOrgaos\').value).value;' + . ' objLupaUnidades.url = document.getElementById(\'lnkRepoEstruturas\' + document.getElementById(\'selRepoEstruturas\').value).value;' . ' return true;' - . ' }' + . ' };' . ' ' . ' objLupaUnidades.finalizarRemocao = function(){' - . ' document.getElementById(\'hdnOrgao\' + document.getElementById(\'selOrgaos\').value).value = document.getElementById(\'hdnUnidades\').value;' + . ' document.getElementById(\'hdnRepoEstruturas\' + document.getElementById(\'selRepoEstruturas\').value).value = document.getElementById(\'hdnUnidades\').value;' . ' return true;' - . ' }' + . ' };' . ' ' . ' objLupaUnidades.finalizarSelecao = function(){' - . ' document.getElementById(\'hdnOrgao\' + document.getElementById(\'selOrgaos\').value).value = document.getElementById(\'hdnUnidades\').value;' - . ' }' + . ' document.getElementById(\'hdnRepoEstruturas\' + document.getElementById(\'selRepoEstruturas\').value).value = document.getElementById(\'hdnUnidades\').value;' + . ' };' . ' ' . ' objAutoCompletarUnidade = new infraAjaxAutoCompletar(\'hdnIdUnidade\',\'txtUnidade\',\'' . SessaoSEI::getInstance()->assinarLink('controlador_ajax.php?acao_ajax=unidade_auto_completar_todas') . '\');' . ' objAutoCompletarUnidade.limparCampo = true;' . ' objAutoCompletarUnidade.prepararExecucao = function(){' - . ' if (document.getElementById(\'selOrgaos\').selectedIndex==-1){' - . ' alert(\'Nenhum Órgão selecionado.\');' + . ' if (document.getElementById(\'selRepoEstruturas\').selectedIndex==-1){' + . ' alert(\'Nenhum RepoEstruturas selecionado.\');' . ' return false;' . ' }' - . ' return \'palavras_pesquisa=\'+document.getElementById(\'txtUnidade\').value+\'&id_orgao=\'+document.getElementById(\'selOrgaos\').value;' + . ' return \'palavras_pesquisa=\'+document.getElementById(\'txtUnidade\').value+\'&id_repo_estruturas=\'+document.getElementById(\'selRepoEstruturas\').value;' . ' };' . ' ' . ' objAutoCompletarUnidade.processarResultado = function(id,descricao,complemento){' . ' if (id!=\'\'){' . ' objLupaUnidades.adicionar(id,descricao,document.getElementById(\'txtUnidade\'));' - . ' document.getElementById(\'hdnOrgao\' + document.getElementById(\'selOrgaos\').value).value = document.getElementById(\'hdnUnidades\').value;' + . ' document.getElementById(\'hdnRepoEstruturas\' + document.getElementById(\'selRepoEstruturas\').value).value = document.getElementById(\'hdnUnidades\').value;' . ' }' . ' };' . ' ' - . ' if (document.getElementById(\'selOrgaos\').options.length){' - . ' document.getElementById(\'selOrgaos\').disabled = false;' - . ' document.getElementById(\'selOrgaos\').options[0].selected = true;' - . ' trocarOrgaoRestricao();' - . ' }'; - + . ' if (document.getElementById(\'selRepoEstruturas\').options.length){' + . ' document.getElementById(\'selRepoEstruturas\').disabled = false;' + . ' document.getElementById(\'selRepoEstruturas\').options[0].selected = true;' + . ' trocarRepoEstruturasRestricao();' + . ' };'; + + $strItensSelRepoEstruturasRestricao = ""; + $strHtmlRepoEstruturasUnidades = ""; $strHtml = '' . '
' - . ' ' - . ' ' - . ' ' - . ' ' + . ' ' + . ' ' - . '
' - . ' Selecionar Órgãos' - . '
' - . ' Remover Órgãos Selecionados' + // . '
' + // . ' Selecionar Órgãos' + // . '
' + // . ' Remover Órgãos Selecionados' . '
' - . ' ' + . ' ' // ' . $_POST['hdnOrgaos'] . ' . ' ' . ' ' . ' ' . ' ' . '
' - . ' Selecionar Unidades' - . '
' - . ' Remover Unidades Selecionadas' - . '
' - . ' ' - . ' ' . $strHtmlOrgaoUnidades . '' + // . ' Selecionar Unidades' + // . '
' + // . ' Remover Unidades Selecionadas' + // . '
' + . ' ' // ' . $_POST['hdnUnidades'] . ' + . ' ' . $strHtmlRepoEstruturasUnidades . '' . '
'; } } diff --git a/src/pen_map_unidade_cadastrar.php b/src/pen_map_unidade_cadastrar.php index 346f0e794..6035e9261 100755 --- a/src/pen_map_unidade_cadastrar.php +++ b/src/pen_map_unidade_cadastrar.php @@ -153,7 +153,8 @@ } } - ProcessoEletronicoINT::montarRestricaoOrgaoUnidade(null, null, $strCssRestricao, $strHtmlRestricao, $strJsGlobalRestricao, $strJsInicializarRestricao); + $strCssRestricao = ""; $strHtmlRestricao = ""; $strJsGlobalRestricao = ""; $strJsInicializarRestricao = ""; + ProcessoEletronicoINT::montarRestricaoOrgaoUnidade($strCssRestricao, $strHtmlRestricao, $strJsGlobalRestricao, $strJsInicializarRestricao); } catch (InfraException $e) { $objPagina->processarExcecao($e); @@ -216,12 +217,11 @@ montarJavaScript(); ?>