From 5bb28e987a53a46329dbcc53f1146bf1b8247e04 Mon Sep 17 00:00:00 2001 From: Guilherme Andrade Del Cantoni Date: Fri, 9 Nov 2018 13:49:16 -0200 Subject: [PATCH] Correção de script de instalação do módulo para banco de dados Oracle --- bd/PenMetaBD.php | 278 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- rn/PenAtualizarSeiRN.php | 168 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------------------------------- rn/ProcessoEletronicoRN.php | 5 +---- 3 files changed, 181 insertions(+), 270 deletions(-) diff --git a/bd/PenMetaBD.php b/bd/PenMetaBD.php index 1871e12..92b9744 100644 --- a/bd/PenMetaBD.php +++ b/bd/PenMetaBD.php @@ -8,71 +8,71 @@ require_once dirname(__FILE__) . '/../../../SEI.php'; * @author Join Tecnologia */ class PenMetaBD extends InfraMetaBD { - + const NNULLO = 'NOT NULL'; const SNULLO = 'NULL'; /** - * + * * @return string */ public function adicionarValorPadraoParaColuna($strNomeTabela, $strNomeColuna, $strValorPadrao, $bolRetornarQuery = false){ - + $objInfraBanco = $this->getObjInfraIBanco(); - + $strTableDrive = get_parent_class($objInfraBanco); $strQuery = ''; - + switch($strTableDrive) { case 'InfraMySqli': $strQuery = sprintf("ALTER TABLE `%s` ALTER COLUMN `%s` SET DEFAULT '%s'", $strNomeTabela, $strNomeColuna, $strValorPadrao); break; - + case 'InfraSqlServer': $strQuery = sprintf("ALTER TABLE [%s] ADD DEFAULT('%s') FOR [%s]", $strNomeTabela, $strValorPadrao, $strNomeColuna); - + case 'InfraOracle': break; } - + if($bolRetornarQuery === false) { - + $objInfraBanco->executarSql($strQuery); } else { - + return $strQuery; } } - + /** * Verifica se o usuário do drive de conexão possui permissão para criar/ remover * estruturas - * + * * @return PenMetaBD */ public function isDriverPermissao(){ - + $objInfraBanco = $this->getObjInfraIBanco(); if(count($this->obterTabelas('sei_teste'))==0){ $objInfraBanco->executarSql('CREATE TABLE sei_teste (id '.$this->tipoNumero().' NULL)'); } - + $objInfraBanco->executarSql('DROP TABLE sei_teste'); - + return $this; } - + /** * Verifica se o banco do SEI é suportador pelo atualizador - * + * * @throws InfraException * @return PenMetaBD */ public function isDriverSuportado(){ - + $strTableDrive = get_parent_class($this->getObjInfraIBanco()); switch($strTableDrive) { @@ -84,7 +84,7 @@ class PenMetaBD extends InfraMetaBD { $version = $version[0]['versao']; $arrVersion = explode('.', $version); if($arrVersion[0].$arrVersion[1] < 56){ - $this->getObjInfraIBanco()->executarSql('@SET STORAGE_ENGINE=InnoDB'); + $this->getObjInfraIBanco()->executarSql('@SET STORAGE_ENGINE=InnoDB'); } case 'InfraSqlServer': case 'InfraOracle': @@ -94,38 +94,38 @@ class PenMetaBD extends InfraMetaBD { throw new InfraException('BANCO DE DADOS NAO SUPORTADO: ' . $strTableDrive); } - + return $this; } - + /** * Verifica se a versão sistema é compativel com a versão do módulo PEN - * + * * @throws InfraException * @return PenMetaBD */ public function isVersaoSuportada($strRegexVersaoSistema, $strVerMinRequirida){ - + $numVersaoRequerida = intval(preg_replace('/\D+/', '', $strVerMinRequirida)); $numVersaoSistema = intval(preg_replace('/\D+/', '', $strRegexVersaoSistema)); - + if($numVersaoRequerida > $numVersaoSistema){ throw new InfraException('VERSAO DO FRAMEWORK PHP INCOMPATIVEL (VERSAO ATUAL '.$strRegexVersaoSistema.', VERSAO REQUERIDA '.$strVerMinRequirida.')'); } - + return $this; } - + /** * Apaga a chave primária da tabela - * + * * @throws InfraException * @return PenMetaBD */ public function removerChavePrimaria($strNomeTabela, $strNomeChave){ - + if($this->isChaveExiste($strNomeTabela, $strNomeChave)) { - + $strTableDrive = get_parent_class($this->getObjInfraIBanco()); switch($strTableDrive) { @@ -144,54 +144,19 @@ class PenMetaBD extends InfraMetaBD { } return $this; } - - public function isChaveExiste($strNomeTabela = '', $strNomeChave = ''){ - - $objInfraBanco = $this->getObjInfraIBanco(); - $strTableDrive = get_parent_class($objInfraBanco); - - switch($strTableDrive) { - - case 'InfraMySqli': - $strSql = " SELECT COUNT(CONSTRAINT_NAME) AS EXISTE - FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS - WHERE CONSTRAINT_SCHEMA = '".$objInfraBanco->getBanco()."' - AND TABLE_NAME = '".$strNomeTabela."' - AND CONSTRAINT_NAME = '".$strNomeChave."'"; - break; - - case 'InfraSqlServer': - - $strSql = " SELECT COUNT(CONSTRAINT_NAME) AS EXISTE - FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS - WHERE CONSTRAINT_CATALOG = '".$objInfraBanco->getBanco()."' - AND TABLE_NAME = '".$strNomeTabela."' - AND CONSTRAINT_NAME = '".$strNomeChave."'"; - break; - - case 'InfraOracle': - $strSql = "SELECT 0 AS EXISTE"; - break; - } - - $strSql = preg_replace('/\s+/', ' ', $strSql); - $arrDados = $objInfraBanco->consultarSql($strSql); - return (intval($arrDados[0]['EXISTE']) > 0) ? true : false; - } - public function adicionarChaveUnica($strNomeTabela = '', $arrNomeChave = array()){ - + $this->getObjInfraIBanco() ->executarSql('ALTER TABLE '.$strNomeTabela.' ADD CONSTRAINT UK_'.$strNomeTabela.' UNIQUE('.implode(', ', $arrNomeChave).')'); } - + public function renomearTabela($strNomeTabelaAtual, $strNomeTabelaNovo){ - + if($this->isTabelaExiste($strNomeTabelaAtual)) { - + $objInfraBanco = $this->getObjInfraIBanco(); - + $strTableDrive = get_parent_class($objInfraBanco); $strQuery = ''; @@ -208,210 +173,167 @@ class PenMetaBD extends InfraMetaBD { $strQuery = sprintf("RENAME TABLE %s TO %s", $strNomeTabelaAtual, $strNomeTabelaNovo); break; } - + $objInfraBanco->executarSql($strQuery); } } - - + + /** * Verifica se uma tabela existe no banco - * + * * @throws InfraException * @return bool */ public function isTabelaExiste($strNomeTabela = ''){ - - $objInfraBanco = $this->getObjInfraIBanco(); - $strTableDrive = get_parent_class($objInfraBanco); - - switch($strTableDrive) { - case 'InfraMySqli': - $strSql = "SELECT COUNT(TABLE_NAME) AS EXISTE - FROM INFORMATION_SCHEMA.TABLES - WHERE TABLE_SCHEMA = '".$objInfraBanco->getBanco()."' - AND TABLE_NAME = '".$strNomeTabela."'"; - break; - - case 'InfraSqlServer': - - $strSql = "SELECT COUNT(TABLE_NAME) AS EXISTE - FROM INFORMATION_SCHEMA.TABLES - WHERE TABLE_CATALOG = '".$objInfraBanco->getBanco()."' - AND TABLE_NAME = '".$strNomeTabela."'"; - break; - - case 'InfraOracle': - $strSql = "SELECT 0 AS EXISTE"; - break; + return count($this->obterTabelas($strNomeTabela)) != 0; + } + + public function isColuna($strNomeTabela = '', $strNomeColuna = ''){ + + $arrColunas = $this->obterColunasTabela($strNomeTabela); + foreach ($arrColunas as $objColuna) { + if($objColuna['column_name'] == $strNomeColuna){ + return true; + } } - - $strSql = preg_replace('/\s+/', ' ', $strSql); - $arrDados = $objInfraBanco->consultarSql($strSql); - return (intval($arrDados[0]['EXISTE']) > 0) ? true : false; + return false; } - - public function isColuna($strNomeTabela = '', $strNomeColuna = ''){ - - $objInfraBanco = $this->getObjInfraIBanco(); - $strTableDrive = get_parent_class($objInfraBanco); - - switch($strTableDrive) { - case 'InfraMySqli': - $strSql = "SELECT COUNT(TABLE_NAME) AS EXISTE - FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_SCHEMA = '".$objInfraBanco->getBanco()."' - AND TABLE_NAME = '".$strNomeTabela."' - AND COLUMN_NAME = '".$strNomeColuna."'"; - break; - - case 'InfraSqlServer': - - $strSql = "SELECT COUNT(COLUMN_NAME) AS EXISTE - FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_CATALOG = '".$objInfraBanco->getBanco()."' - AND TABLE_NAME = '".$strNomeTabela."' - AND COLUMN_NAME = '".$strNomeColuna."'"; - break; - - case 'InfraOracle': - $strSql = "SELECT 0 AS EXISTE"; - break; + public function isChaveExiste($strNomeTabela = '', $strNomeChave = ''){ + + $arrConstraints = $this->obterConstraints($strNomeTabela); + foreach ($arrConstraints as $objConstraint) { + if($objConstraint['constraint_name'] == $strNomeChave){ + return true; + } } - - $strSql = preg_replace('/\s+/', ' ', $strSql); - $arrDados = $objInfraBanco->consultarSql($strSql); - return (intval($arrDados[0]['EXISTE']) > 0) ? true : false; - - + return false; } - + /** * Cria a estrutura da tabela no padrão ANSI - * + * * @throws InfraException * @return PenMetaBD */ public function criarTabela($arrSchema = array()){ - + $strNomeTabela = $arrSchema['tabela']; - - + if($this->isTabelaExiste($strNomeTabela)) { return $this; } - + $objInfraBanco = $this->getObjInfraIBanco(); $arrColunas = array(); $arrStrQuery = array(); foreach($arrSchema['cols'] as $strNomeColuna => $arrColunaConfig) { - + list($strTipoDado, $strValorPadrao) = $arrColunaConfig; - + if($strValorPadrao != self::SNULLO && $strValorPadrao != self::NNULLO) { - + $arrStrQuery[] = $this->adicionarValorPadraoParaColuna($strNomeTabela, $strNomeColuna, $strValorPadrao, true); $strValorPadrao = self::NNULLO; } $arrColunas[] = $strNomeColuna.' '.$strTipoDado.' '.$strValorPadrao; } - + $objInfraBanco->executarSql('CREATE TABLE '.$strNomeTabela.' ('.implode(', ', $arrColunas).')'); - + if(!empty($arrSchema['pk'])) { - - $this->adicionarChavePrimaria($strNomeTabela, 'pk_'.$strNomeTabela, $arrSchema['pk']); - - if(count($arrSchema['pk']) > 1) { - - foreach($arrSchema['pk'] as $strPk) { - - $objInfraBanco->executarSql('CREATE INDEX idx_'.$strNomeTabela.'_'.$strPk.' ON '.$strNomeTabela.'('.$strPk.')'); - } + $strNomePK = array_key_exists('nome', $arrSchema['pk']) ? $arrSchema['pk']['nome'] : 'pk_' . $strNomeTabela; + $arrColunas = array_key_exists('cols', $arrSchema['pk']) ? $arrSchema['pk']['cols'] : $arrSchema['pk']; + $this->adicionarChavePrimaria($strNomeTabela, $strNomePK, $arrColunas); + if(count($arrColunas) > 1) { + for ($i=0; $i < count($arrColunas); $i++) { + $strPk = $arrColunas[$i]; + $strNomeIndex = substr("i" . str_pad($i + 1, 2, "0", STR_PAD_LEFT) . '_' . $strNomeTabela, 0, 30); + $objInfraBanco->executarSql('CREATE INDEX '.$strNomeIndex.' ON '.$strNomeTabela.'('.$strPk.')'); + } } } - + if(array_key_exists('uk', $arrSchema) && !empty($arrSchema['uk'])) { - $this->adicionarChaveUnica($strNomeTabela, $arrSchema['uk']); } - + if(!empty($arrSchema['fks'])) { - + foreach($arrSchema['fks'] as $strTabelaOrigem => $array) { - - $strNomeFK = 'fk_'.$strNomeTabela.'_'.$strTabelaOrigem; - $arrCamposOrigem = (array)array_shift($array); + $strNomeFK = array_key_exists('nome', $array) ? $array['nome'] : 'fk_'.$strNomeTabela.'_'.$strTabelaOrigem; + $arrayColumns = array_key_exists('cols', $array) ? $array['cols'] : $array; + $arrCamposOrigem = (array)array_shift($arrayColumns); $arrCampos = $arrCamposOrigem; - if(!empty($array)) { - $arrCampos = (array)array_shift($array); + if(!empty($arrayColumns)) { + $arrCampos = (array)array_shift($arrayColumns); } - $this->adicionarChaveEstrangeira($strNomeFK, $strNomeTabela, $arrCampos, $strTabelaOrigem, $arrCamposOrigem); + $this->adicionarChaveEstrangeira($strNomeFK, $strNomeTabela, $arrCampos, $strTabelaOrigem, $arrCamposOrigem); } } - + if(!empty($arrStrQuery)) { - - foreach($arrStrQuery as $strQuery) { + + foreach($arrStrQuery as $strQuery) { $objInfraBanco->executarSql($strQuery); } } - + return $this; } - + /** * Apagar a estrutura da tabela no banco de dados - * + * * @throws InfraException * @return PenMetaBD */ public function removerTabela($strNomeTabela = ''){ - + $this->getObjInfraIBanco()->executarSql('DROP TABLE '.$strNomeTabela); return $this; } - + public function adicionarChaveEstrangeira($strNomeFK, $strTabela, $arrCampos, $strTabelaOrigem, $arrCamposOrigem) { - + if(!$this->isChaveExiste($strTabela, $strNomeFK)) { parent::adicionarChaveEstrangeira($strNomeFK, $strTabela, $arrCampos, $strTabelaOrigem, $arrCamposOrigem); } return $this; } - + public function adicionarChavePrimaria($strTabela, $strNomePK, $arrCampos) { - + if(!$this->isChaveExiste($strTabela, $strNomePK)) { parent::adicionarChavePrimaria($strTabela, $strNomePK, $arrCampos); } return $this; } - + public function alterarColuna($strTabela, $strColuna, $strTipo, $strNull = '') { parent::alterarColuna($strTabela, $strColuna, $strTipo, $strNull); return $this; } - + public function excluirIndice($strTabela, $strIndex) { if($this->isChaveExiste($strTabela, $strFk)) { parent::excluirIndice($strTabela, $strIndex); } return $this; } - + public function excluirChaveEstrangeira($strTabela, $strFk) { if($this->isChaveExiste($strTabela, $strFk)) { parent::excluirChaveEstrangeira($strTabela, $strFk); } return $this; } -} \ No newline at end of file +} diff --git a/rn/PenAtualizarSeiRN.php b/rn/PenAtualizarSeiRN.php index 9de7505..ab85288 100644 --- a/rn/PenAtualizarSeiRN.php +++ b/rn/PenAtualizarSeiRN.php @@ -107,13 +107,15 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { 'numero_registro' => array($objMetaBD->tipoTextoFixo(16), PenMetaBD::NNULLO), 'id_procedimento' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO) ), - 'pk' => array('numero_registro'), + 'pk' => array('cols'=>array('numero_registro')), 'uk' => array('numero_registro', 'id_procedimento'), 'fks' => array( - 'procedimento' => array('id_procedimento', 'id_procedimento') + 'procedimento' => array('nome' => 'fk_md_pen_proc_eletr_procedim', + 'cols' => array('id_procedimento', 'id_procedimento')), ) )); + $objMetaBD->criarTabela(array( 'tabela' => 'md_pen_tramite', 'cols' => array( @@ -125,15 +127,17 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { 'id_usuario' => array($objMetaBD->tipoNumero(), PenMetaBD::SNULLO), 'id_unidade' => array($objMetaBD->tipoNumero(), PenMetaBD::SNULLO) ), - 'pk' => array('id_tramite'), + 'pk' => array('cols'=>array('id_tramite')), 'uk' => array('numero_registro', 'id_tramite'), 'fks' => array( - 'md_pen_processo_eletronico' => array('numero_registro', 'numero_registro'), + 'md_pen_processo_eletronico' => array('nome'=>'fk_md_pen_tramite_proc_eletr', + 'cols' => array('numero_registro', 'numero_registro')), 'usuario' => array('id_usuario', 'id_usuario'), - 'unidade' => array('id_unidade', 'id_unidade') + 'unidade' => array('id_unidade', 'id_unidade'), ) )); + $objMetaBD->criarTabela(array( 'tabela' => 'md_pen_especie_documental', 'cols' => array( @@ -141,9 +145,10 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { 'nome_especie' => array($objMetaBD->tipoTextoVariavel(255), PenMetaBD::NNULLO), 'descricao' => array($objMetaBD->tipoTextoVariavel(255), PenMetaBD::NNULLO) ), - 'pk' => array('id_especie') + 'pk' => array('cols'=>array('id_especie')), )); + $objMetaBD->criarTabela(array( 'tabela' => 'md_pen_tramite_pendente', 'cols' => array( @@ -151,7 +156,7 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { 'numero_tramite' => array($objMetaBD->tipoTextoVariavel(255)), 'id_atividade_expedicao' => array($objMetaBD->tipoNumero(), PenMetaBD::SNULLO) ), - 'pk' => array('id') + 'pk' => array('cols'=>array('id')), )); $objMetaBD->criarTabela(array( @@ -162,7 +167,7 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { 'dth_recebimento' => array($objMetaBD->tipoDataHora(), PenMetaBD::NNULLO), 'hash_assinatura' => array($objMetaBD->tipoTextoVariavel(345), PenMetaBD::NNULLO) ), - 'pk' => array('numero_registro', 'id_tramite') + 'pk' => array('cols'=>array('numero_registro', 'id_tramite')), )); @@ -178,7 +183,7 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { 'hash' => array($objMetaBD->tipoTextoFixo(32), PenMetaBD::NNULLO), 'id_tarefa' => array($objMetaBD->tipoTextoVariavel(255), PenMetaBD::NNULLO) ), - 'pk' => array('id_andamento') + 'pk' => array('nome' => 'pk_md_pen_procedim_andamen', 'cols'=>array('id_andamento')), )); $objMetaBD->criarTabela(array( @@ -187,20 +192,12 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { 'id_protocolo' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), 'sin_obteve_recusa' => array($objMetaBD->tipoTextoFixo(1), 'N') ), - 'pk' => array('id_protocolo'), + 'pk' => array('cols'=>array('id_protocolo')), 'fks' => array( 'protocolo' => array('id_protocolo', 'id_protocolo') ) )); - /* $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_tramite_recusado', - 'cols' => array( - 'numero_registro'=> array($objMetaBD->tipoTextoFixo(16), PenMetaBD::NNULLO), - 'id_tramite' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO) - ), - 'pk' => array('id_tramite') - )); */ $objMetaBD->criarTabela(array( 'tabela' => 'md_pen_recibo_tramite', @@ -211,9 +208,10 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { 'hash_assinatura' => array($objMetaBD->tipoTextoVariavel(345), PenMetaBD::NNULLO), 'cadeia_certificado' => array($objMetaBD->tipoTextoVariavel(255), PenMetaBD::NNULLO) ), - 'pk' => array('numero_registro', 'id_tramite'), + 'pk' => array('cols'=>array('numero_registro', 'id_tramite')), 'fks' => array( - 'md_pen_tramite' => array(array('numero_registro', 'id_tramite'), array('numero_registro', 'id_tramite')) + 'md_pen_tramite' => array('nome' => 'fk_md_pen_rec_tramite_tramite', + 'cols' => array(array('numero_registro', 'id_tramite'), array('numero_registro', 'id_tramite'))) ) )); @@ -226,12 +224,14 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { 'hash_assinatura' => array($objMetaBD->tipoTextoVariavel(345), PenMetaBD::NNULLO), 'cadeia_certificado ' => array($objMetaBD->tipoTextoVariavel(255), PenMetaBD::NNULLO) ), - 'pk' => array('numero_registro', 'id_tramite'), + 'pk' => array('nome' => 'pk_md_pen_recibo_tram_envia', 'cols'=>array('numero_registro', 'id_tramite')), 'fks' => array( - 'md_pen_tramite' => array(array('numero_registro', 'id_tramite'), array('numero_registro', 'id_tramite')) + 'md_pen_tramite' => array('nome' => 'fk_md_pen_rec_tram_env_tram', + 'cols' => array(array('numero_registro', 'id_tramite'), array('numero_registro', 'id_tramite'))) ) )); + $objMetaBD->criarTabela(array( 'tabela' => 'md_pen_recibo_tramite_recebido', 'cols' => array( @@ -240,12 +240,14 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { 'dth_recebimento' => array($objMetaBD->tipoDataHora(), PenMetaBD::NNULLO), 'hash_assinatura' => array($objMetaBD->tipoTextoVariavel(345), PenMetaBD::NNULLO) ), - 'pk' => array('numero_registro', 'id_tramite', 'hash_assinatura'), + 'pk' => array('nome' => 'pk_md_pen_recibo_tramite_receb', 'cols'=>array('numero_registro', 'id_tramite', 'hash_assinatura')), 'fks' => array( - 'md_pen_tramite' => array(array('numero_registro', 'id_tramite'), array('numero_registro', 'id_tramite')) + 'md_pen_tramite' => array('nome' => 'fk_md_pen_recibo_receb_tram', + 'cols' => array(array('numero_registro', 'id_tramite'), array('numero_registro', 'id_tramite'))) ) )); + $objMetaBD->criarTabela(array( 'tabela' => 'md_pen_rel_processo_apensado', 'cols' => array( @@ -253,9 +255,10 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { 'id_procedimento_apensado' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), 'protocolo' => array($objMetaBD->tipoTextoVariavel(50), PenMetaBD::NNULLO) ), - 'pk' => array('numero_registro', 'id_procedimento_apensado'), + 'pk' => array('nome' => 'pk_md_pen_rel_processo_apensad', 'cols'=>array('numero_registro', 'id_procedimento_apensado')), 'fks' => array( - 'md_pen_processo_eletronico' => array('numero_registro', 'numero_registro') + 'md_pen_processo_eletronico' => array('nome' => 'fk_md_pen_proc_eletr_apensado', + 'cols' => array('numero_registro', 'numero_registro')) ) )); @@ -266,10 +269,10 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { 'id_serie' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), 'sin_padrao' => array($objMetaBD->tipoTextoFixo(1), 'N') ), - 'pk' => array('id_serie'), + 'pk' => array('cols'=>array('id_serie')), 'uk' => array('codigo_especie', 'id_serie'), 'fks' => array( - 'serie' => array('id_serie', 'id_serie') + 'serie' => array('nome' => ' fk_md_pen_rel_serie_especie', 'cols' => array('id_serie', 'id_serie')) ) )); @@ -279,22 +282,23 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { 'id_tarefa' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), 'codigo_operacao' => array($objMetaBD->tipoTextoFixo(2), PenMetaBD::NNULLO) ), - 'pk' => array('id_tarefa', 'codigo_operacao'), + 'pk' => array('cols'=>array('id_tarefa', 'codigo_operacao')), 'fks' => array( - 'tarefa' => array('id_tarefa', 'id_tarefa') + 'tarefa' => array('nome' => 'fk_md_pen_rel_operacao_tarefa', 'cols' => array('id_tarefa', 'id_tarefa')) ) )); + $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_rel_tipo_documento_mapeamento_recebido', + 'tabela' => 'md_pen_rel_tipo_doc_map_rec', 'cols' => array( 'codigo_especie' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), 'id_serie' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), 'sin_padrao' => array($objMetaBD->tipoTextoFixo(2), PenMetaBD::NNULLO) ), - 'pk' => array('codigo_especie', 'id_serie'), + 'pk' => array('cols'=>array('codigo_especie', 'id_serie')), 'fks' => array( - 'serie' => array('id_serie', 'id_serie') + 'serie' => array('nome' =>'fk_md_pen_rel_tipo_doc_serie', 'cols' => array('id_serie', 'id_serie')) ) )); @@ -317,13 +321,13 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { 'ordem' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), 'sin_enviar' => array($objMetaBD->tipoTextoFixo(1), 'N') ), - 'pk' => array('numero_registro', 'id_procedimento', 'id_documento', 'id_tramite'), + 'pk' => array('cols'=>array('numero_registro', 'id_procedimento', 'id_documento', 'id_tramite')), 'fks' => array( - 'anexo' => array('id_anexo', 'id_anexo'), - 'documento' => array('id_documento', 'id_documento'), - 'procedimento' => array('id_procedimento', 'id_procedimento'), - 'md_pen_processo_eletronico' => array('numero_registro', 'numero_registro'), - 'md_pen_tramite' => array(array('numero_registro', 'id_tramite'), array('numero_registro', 'id_tramite')) + 'anexo' => array('nome' => 'fk_md_pen_comp_dig_anexo', 'cols' => array('id_anexo', 'id_anexo')), + 'documento' => array('nome' => 'fk_md_pen_comp_dig_documento', 'cols' => array('id_documento', 'id_documento')), + 'procedimento' => array('nome' => 'fk_md_pen_comp_dig_procediment', 'cols' => array('id_procedimento', 'id_procedimento')), + 'md_pen_processo_eletronico' => array('nome' => 'fk_md_pen_comp_dig_proc_eletr', 'cols' => array('numero_registro', 'numero_registro')), + 'md_pen_tramite' => array('nome' => 'fk_md_pen_comp_dig_tramite', 'cols' => array(array('numero_registro', 'id_tramite'), array('numero_registro', 'id_tramite'))) ) )); @@ -333,12 +337,13 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { 'id_unidade' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), 'id_unidade_rh' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO) ), - 'pk' => array('id_unidade'), + 'pk' => array('cols'=>array('id_unidade')), 'fks' => array( 'unidade' => array('id_unidade', 'id_unidade') ) )); + //---------------------------------------------------------------------- // Novas sequências //---------------------------------------------------------------------- @@ -670,7 +675,7 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { 'numero_tentativas' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), 'sin_recebimento_concluido' => array($objMetaBD->tipoTextoFixo(1), PenMetaBD::NNULLO) ), - 'pk' => array('id_tramite') + 'pk' => array('cols'=>array('id_tramite')), )); $objInfraParametro = new InfraParametro($objInfraBanco); @@ -742,11 +747,10 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { 'id_serie' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), 'sin_padrao' => array($objMetaBD->tipoTextoFixo(1), 'S') ), - 'pk' => array('id_mapeamento'), - //'uk' => array('codigo_especie', 'id_serie'), + 'pk' => array('cols'=>array('id_mapeamento')), 'fks' => array( - 'serie' => array('id_serie', 'id_serie'), - 'md_pen_especie_documental' => array('id_especie', 'codigo_especie'), + 'serie' => array('nome' => 'fk_md_pen_rel_doc_map_env_seri', 'cols' => array('id_serie', 'id_serie')), + 'md_pen_especie_documental' => array('nome' => 'fk_md_pen_rel_doc_map_env_espe', 'cols' => array('id_especie', 'codigo_especie')), ) )); @@ -758,22 +762,17 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { 'id_serie' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), 'sin_padrao' => array($objMetaBD->tipoTextoFixo(1), 'S') ), - 'pk' => array('id_mapeamento'), - //'uk' => array('codigo_especie', 'id_serie'), + 'pk' => array('cols'=>array('id_mapeamento')), 'fks' => array( - 'serie' => array('id_serie', 'id_serie'), - 'md_pen_especie_documental' => array('id_especie', 'codigo_especie'), + 'serie' => array('nome' => 'fk_md_pen_rel_doc_map_rec_seri', 'cols' => array('id_serie', 'id_serie')), + 'md_pen_especie_documental' => array('nome' => 'fk_md_pen_rel_doc_map_rec_espe', 'cols' => array('id_especie', 'codigo_especie')), ) )); $objBD = new GenericoBD($objInfraBanco); - if ($objMetaBD->isTabelaExiste('md_pen_rel_tipo_documento_mapeamento_recebido')) { - $objDTO = new PenRelTipoDocMapRecebidoDTO(); - $fnCadastrar = function($numCodigoEspecie, $numIdSerie) use($objDTO, $objBD) { - $objDTO->unSetTodos(); $objDTO->setNumCodigoEspecie($numCodigoEspecie); $objDTO->setNumIdSerie($numIdSerie); @@ -788,7 +787,6 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { $arrDados = $objInfraBanco->consultarSql('SELECT DISTINCT codigo_especie, id_serie FROM md_pen_rel_tipo_documento_mapeamento_recebido'); if (!empty($arrDados)) { foreach ($arrDados as $arrDocMapRecebido) { - $fnCadastrar($arrDocMapRecebido['codigo_especie'], $arrDocMapRecebido['id_serie']); } } @@ -796,11 +794,8 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { $objMetaBD->removerTabela('md_pen_rel_tipo_documento_mapeamento_recebido'); } - if ($objMetaBD->isTabelaExiste('md_pen_rel_serie_especie')) { - $objDTO = new PenRelTipoDocMapEnviadoDTO(); - $fnCadastrar = function($numCodigoEspecie, $numIdSerie) use($objDTO, $objBD) { $objDTO->unSetTodos(); @@ -808,7 +803,6 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { $objDTO->setNumIdSerie($numIdSerie); if ($objBD->contar($objDTO) == 0) { - $objDTO->setStrPadrao('S'); $objBD->cadastrar($objDTO); } @@ -817,7 +811,6 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { $arrDados = $objInfraBanco->consultarSql('SELECT DISTINCT codigo_especie, id_serie FROM md_pen_rel_serie_especie'); if (!empty($arrDados)) { foreach ($arrDados as $arrDocMapEnviado) { - $fnCadastrar($arrDocMapEnviado['codigo_especie'], $arrDocMapEnviado['id_serie']); } } @@ -828,10 +821,15 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { /* ---------- antigo método (instalarV004R003S003IW002) ---------- */ $strTipo = $this->inicializarObjMetaBanco()->tipoTextoGrande(); + $objMetaBanco->adicionarColuna('md_pen_recibo_tramite', 'cadeia_certificado_temp', $strTipo, PenMetaBD::SNULLO); + BancoSEI::getInstance()->executarSql("update md_pen_recibo_tramite set cadeia_certificado_temp = cadeia_certificado"); + $objMetaBanco->excluirColuna('md_pen_recibo_tramite', 'cadeia_certificado'); + BancoSEI::getInstance()->executarSql("alter table md_pen_recibo_tramite rename column cadeia_certificado_temp to cadeia_certificado"); - $this->inicializarObjMetaBanco() - ->alterarColuna('md_pen_recibo_tramite', 'cadeia_certificado', $strTipo) - ->alterarColuna('md_pen_recibo_tramite_enviado', 'cadeia_certificado', $strTipo); + $objMetaBanco->adicionarColuna('md_pen_recibo_tramite_enviado', 'cadeia_certificado_temp', $strTipo, PenMetaBD::SNULLO); + BancoSEI::getInstance()->executarSql("update md_pen_recibo_tramite_enviado set cadeia_certificado_temp = cadeia_certificado"); + $objMetaBanco->excluirColuna('md_pen_recibo_tramite_enviado', 'cadeia_certificado'); + BancoSEI::getInstance()->executarSql("alter table md_pen_recibo_tramite_enviado rename column cadeia_certificado_temp to cadeia_certificado"); /* ---------- antigo método (instalarV005R003S005IW018) ---------- */ $objBD = new GenericoBD($this->inicializarObjInfraIBanco()); @@ -905,18 +903,16 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { 'tipo_recibo' => array($objMetaBD->tipoTextoFixo(1), PenMetaBD::NNULLO), 'hash_componente_digital ' => array($objMetaBD->tipoTextoVariavel(255), PenMetaBD::NNULLO) ), - 'pk' => array('id_tramite_hash'), + 'pk' => array('cols'=>array('id_tramite_hash')), 'fks' => array( - 'md_pen_tramite' => array(array('numero_registro', 'id_tramite'), array('numero_registro', 'id_tramite')) + 'md_pen_tramite' => array('nome' => 'fk_md_pen_rec_tram_hash_tram', 'cols' => array(array('numero_registro', 'id_tramite'), array('numero_registro', 'id_tramite'))) ) )); $objMetaBD->adicionarColuna('md_pen_recibo_tramite_recebido', 'cadeia_certificado', $this->inicializarObjMetaBanco()->tipoTextoGrande(), PenMetaBD::SNULLO); $objInfraSequencia = new InfraSequencia($this->getObjInfraIBanco()); - if (!$objInfraSequencia->verificarSequencia('md_pen_recibo_tramite_hash')) { - $objInfraSequencia->criarSequencia('md_pen_recibo_tramite_hash', '1', '1', '9999999999'); } @@ -957,7 +953,7 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { 'nome' => array($objMetaBD->tipoTextoVariavel(255), PenMetaBD::NNULLO), 'sin_ativo' => array($objMetaBD->tipoTextoFixo(1), 'S'), ), - 'pk' => array('id_hipotese_legal') + 'pk' => array('cols'=>array('id_hipotese_legal')), )); $objMetaBD->criarTabela(array( @@ -969,10 +965,10 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { 'tipo' => array($objMetaBD->tipoTextoFixo(1), 'E'), 'sin_ativo' => array($objMetaBD->tipoTextoFixo(1), 'S'), ), - 'pk' => array('id_mapeamento'), + 'pk' => array('cols'=>array('id_mapeamento')), 'fks' => array( - 'hipotese_legal' => array('id_hipotese_legal', 'id_hipotese_legal'), - 'md_pen_hipotese_legal' => array('id_hipotese_legal', 'id_hipotese_legal_pen') + 'hipotese_legal' => array('nome' => 'fk_md_pen_rel_hipotese_legal', 'cols' => array('id_hipotese_legal', 'id_hipotese_legal')), + 'md_pen_hipotese_legal' => array('nome' => 'fk_md_pen_rel_hipotese_pen', 'cols' => array('id_hipotese_legal', 'id_hipotese_legal_pen')) ) )); @@ -1001,7 +997,7 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { 'nome'=> array($objMetaBD->tipoTextoVariavel(100), PenMetaBD::NNULLO), 'valor' => array($objMetaBD->tipoTextoGrande(), PenMetaBD::NNULLO) ), - 'pk' => array('nome') + 'pk' => array('cols'=>array('nome')), )); //Agendamento @@ -1027,13 +1023,9 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { $fnCadastrar('PENAgendamentoRN::atualizarHipotesesLegais', 'Verificação se há novas hipóteses legais do barramento.'); /* altera o parâmetro da versão de banco */ + $objInfraParametroBD = new InfraParametroBD($this->inicializarObjInfraIBanco()); $objInfraParametroDTO = new InfraParametroDTO(); $objInfraParametroDTO->setStrNome(self::PARAMETRO_VERSAO_MODULO_ANTIGO); - $objInfraParametroDTO->setStrValor('1.0.0'); - $objInfraParametroDTO->retTodos(); - - $objInfraParametroBD = new InfraParametroBD($this->inicializarObjInfraIBanco()); - $objInfraParametroDTO = $objInfraParametroBD->consultar($objInfraParametroDTO); $objInfraParametroDTO->setStrValor('1.0.1'); $objInfraParametroBD->alterar($objInfraParametroDTO); } @@ -1090,14 +1082,12 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { } /* altera o parâmetro da versão de banco */ + $objInfraParametroBD = new InfraParametroBD($this->inicializarObjInfraIBanco()); $objInfraParametroDTO = new InfraParametroDTO(); $objInfraParametroDTO->setStrNome(self::PARAMETRO_VERSAO_MODULO_ANTIGO); - $objInfraParametroDTO->setStrValor('1.0.1'); - $objInfraParametroDTO->retTodos(); - $objInfraParametroBD = new InfraParametroBD($this->inicializarObjInfraIBanco()); - $objInfraParametroDTO = $objInfraParametroBD->consultar($objInfraParametroDTO); $objInfraParametroDTO->setStrValor('1.1.0'); $objInfraParametroBD->alterar($objInfraParametroDTO); + } /* Contem atualizações da versao 1.1.1 do módulo */ @@ -1107,11 +1097,9 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { BancoSEI::getInstance()->executarSql("update infra_parametro set nome = '" . self::PARAMETRO_VERSAO_MODULO . "' where nome = '" . self::PARAMETRO_VERSAO_MODULO_ANTIGO . "'"); /* altera o parâmetro da versão de banco */ + $objInfraParametroBD = new InfraParametroBD($this->inicializarObjInfraIBanco()); $objInfraParametroDTO = new InfraParametroDTO(); $objInfraParametroDTO->setStrNome(self::PARAMETRO_VERSAO_MODULO); - $objInfraParametroDTO->retTodos(); - $objInfraParametroBD = new InfraParametroBD($this->inicializarObjInfraIBanco()); - $objInfraParametroDTO = $objInfraParametroBD->consultar($objInfraParametroDTO); $objInfraParametroDTO->setStrValor('1.1.1'); $objInfraParametroBD->alterar($objInfraParametroDTO); } @@ -1144,15 +1132,19 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { $fnCadastrar(186, 'Estudo', 'Podendo ser complementado com "Técnico Preliminar da Contratação"; "Técnico".'); $fnCadastrar(999, 'Outra', 'Outras espécies documentais não identificadas.'); + // if($this->isTabelaExiste('md_pen_rel_tipo_documento_mapeamento_recebido')) { + // if (BancoSEI::getInstance() instanceof InfraSqlServer) { + // BancoSEI::getInstance()->executarSql("sp_rename 'md_pen_rel_tipo_documento_mapeamento_recebido', 'md_pen_rel_tipo_doc_map_rec'"); + // } else { + // BancoSEI::getInstance()->executarSql("ALTER TABLE 'md_pen_rel_tipo_documento_mapeamento_recebido' RENAME TO 'md_pen_rel_tipo_doc_map_rec'"); + // } + // } + //altera o parâmetro da versão de banco + $objInfraParametroBD = new InfraParametroBD($this->inicializarObjInfraIBanco()); $objInfraParametroDTO = new InfraParametroDTO(); $objInfraParametroDTO->setStrNome(self::PARAMETRO_VERSAO_MODULO); - $objInfraParametroDTO->retTodos(); - $objInfraParametroBD = new InfraParametroBD($this->inicializarObjInfraIBanco()); - $objInfraParametroDTO = $objInfraParametroBD->consultar($objInfraParametroDTO); $objInfraParametroDTO->setStrValor('1.1.7'); $objInfraParametroBD->alterar($objInfraParametroDTO); } - - } diff --git a/rn/ProcessoEletronicoRN.php b/rn/ProcessoEletronicoRN.php index 9665b91..e87ff26 100644 --- a/rn/ProcessoEletronicoRN.php +++ b/rn/ProcessoEletronicoRN.php @@ -104,7 +104,7 @@ class ProcessoEletronicoRN extends InfraRN { , 'local_cert' => $this->strLocalCert , 'passphrase' => $this->strLocalCertPassword , 'resolve_wsdl_remote_includes' => true - , 'cache_wsdl'=> DIR_SEI_TEMP + , 'cache_wsdl'=> WSDL_CACHE_NONE , 'trace' => true , 'encoding' => 'UTF-8' , 'attachment_type' => BeSimple\SoapCommon\Helper::ATTACHMENTS_TYPE_MTOM @@ -163,13 +163,10 @@ class ProcessoEletronicoRN extends InfraRN { try { $objConfig = ConfiguracaoSEI::getInstance(); - if($objConfig->isSetValor('SEI', 'LogPenWs')){ - $this->objPenWs = new LogPenWs($objConfig->getValor('SEI', 'LogPenWs'), $this->strWSDL, $this->options); } else { - $this->objPenWs = new BeSimple\SoapClient\SoapClient($this->strWSDL, $this->options); } } catch (Exception $e) { -- libgit2 0.21.2