Commit f925f3bf8d7561af5edf2c4926dcdb641f2fabe1

Authored by Guilherme Andrade Del Cantoni
1 parent 5153aeb5

[Fixed #53] Ajuste em IDs de tarefas customizadas pelo módulo

rn/PenAtualizarSeiRN.php
... ... @@ -62,6 +62,7 @@ class PenAtualizarSeiRN extends PenAtualizadorRN {
62 62 case '1.1.13': $this->instalarV1114();
63 63 case '1.1.14': $this->instalarV1115();
64 64 case '1.1.15': $this->instalarV1116();
  65 + case '1.1.16': $this->instalarV1117();
65 66  
66 67 break;
67 68 default:
... ... @@ -1411,4 +1412,93 @@ class PenAtualizarSeiRN extends PenAtualizadorRN {
1411 1412 $objInfraParametroDTO->setStrValor('1.1.16');
1412 1413 $objInfraParametroBD->alterar($objInfraParametroDTO);
1413 1414 }
  1415 +
  1416 + /* Contêm atualizações da versao 1.1.17 do módulo */
  1417 + protected function instalarV1117() {
  1418 +
  1419 + // Definição de função anônima responsável por realizar as seguintes tarefas:
  1420 + // (1) Identificar a tarefa com ID conflitante do SEI
  1421 + // (2) Criar nova tarefa identica mas com ID correto dentro das faixas definidas pelo SEI (maior que 1000)
  1422 + // (3) Atualizar o id_tarefa de todas as atividades relacionadas
  1423 + // (4) Remover a tarefa anterior com ID inválido
  1424 + // (5) Atualizar o campo id_tarefa_modulo com o valor correspondente
  1425 + $fnCadastrar = function($numIdTarefa, $strIdTarefaModulo) {
  1426 +
  1427 + // Identificar a tarefa com ID conflitante do SEI
  1428 + $objTarefaRN = new TarefaRN();
  1429 + $objTarefaBD = new TarefaBD(BancoSEI::getInstance());
  1430 + $objTarefaDTOAntigo = new TarefaDTO();
  1431 + $objTarefaDTOAntigo->retTodos();
  1432 + $objTarefaDTOAntigo->setStrIdTarefaModulo($strIdTarefaModulo);
  1433 + $objTarefaDTOAntigo = $objTarefaBD->consultar($objTarefaDTOAntigo);
  1434 +
  1435 + if(isset($objTarefaDTOAntigo)) {
  1436 + try {
  1437 + // Criar nova tarefa identica mas com ID correto dentro das faixas definidas pelo SEI (maior que 1000)
  1438 + InfraDebug::getInstance()->gravar("Duplicando tarefa customizadas $strIdTarefaModulo utilizando o controle de sequência 1000");
  1439 + $objTarefaDTO = new TarefaDTO();
  1440 + $objTarefaDTO->setNumIdTarefa($numIdTarefa);
  1441 + $objTarefaDTO->setStrNome($objTarefaDTOAntigo->getStrNome());
  1442 + $objTarefaDTO->setStrSinHistoricoResumido($objTarefaDTOAntigo->getStrSinHistoricoResumido());
  1443 + $objTarefaDTO->setStrSinHistoricoCompleto($objTarefaDTOAntigo->getStrSinHistoricoCompleto());
  1444 + $objTarefaDTO->setStrSinFecharAndamentosAbertos($objTarefaDTOAntigo->getStrSinFecharAndamentosAbertos());
  1445 + $objTarefaDTO->setStrSinLancarAndamentoFechado($objTarefaDTOAntigo->getStrSinLancarAndamentoFechado());
  1446 + $objTarefaDTO->setStrSinPermiteProcessoFechado($objTarefaDTOAntigo->getStrSinPermiteProcessoFechado());
  1447 + $objTarefaDTO->setStrIdTarefaModulo(null);
  1448 + $objTarefaBD->cadastrar($objTarefaDTO);
  1449 +
  1450 + // Atualizar o id_tarefa de todas as atividades relacionadas
  1451 + InfraDebug::getInstance()->gravar("Atualizando atividades com chave da nova tarefa $strIdTarefaModulo");
  1452 + $numIdTarefaAnterior = $objTarefaDTOAntigo->getNumIdTarefa();
  1453 + BancoSEI::getInstance()->executarSql("UPDATE atividade SET id_tarefa = $numIdTarefa where id_tarefa = $numIdTarefaAnterior");
  1454 +
  1455 + // Remover a tarefa anterior com ID inválido
  1456 + InfraDebug::getInstance()->gravar("Apagando a tarefa anterior $strIdTarefaModulo");
  1457 + $objTarefaBD->excluir($objTarefaDTOAntigo);
  1458 +
  1459 + // Atualizar o campo id_tarefa_modulo com o valor correspondente
  1460 + $objTarefaDTOUpdate = new TarefaDTO();
  1461 + $objTarefaDTOUpdate->setNumIdTarefa($numIdTarefa);
  1462 + $objTarefaDTOUpdate->setStrIdTarefaModulo($strIdTarefaModulo);
  1463 + $objTarefaBD->alterar($objTarefaDTOUpdate);
  1464 +
  1465 + } catch (Exception $e) {
  1466 + throw new InfraException($e);
  1467 + }
  1468 + }
  1469 + };
  1470 +
  1471 + $rsTabelaTarefa = BancoSEI::getInstance()->consultarSql('select max(id_tarefa) as ultimo from tarefa');
  1472 + $numMaxId = $rsTabelaTarefa[0]['ultimo'];
  1473 + if (!isset($numMaxId) || $numMaxId < 1000){
  1474 + $numMaxId = 1000;
  1475 + }
  1476 +
  1477 + $fnCadastrar($numMaxId++, 'PEN_PROCESSO_EXPEDIDO');
  1478 + $fnCadastrar($numMaxId++, 'PEN_PROCESSO_RECEBIDO');
  1479 + $fnCadastrar($numMaxId++, 'PEN_PROCESSO_RECUSADO');
  1480 + $fnCadastrar($numMaxId++, 'PEN_PROCESSO_CANCELADO');
  1481 + $fnCadastrar($numMaxId++, 'PEN_OPERACAO_EXTERNA');
  1482 + $fnCadastrar($numMaxId++, 'PEN_EXPEDICAO_PROCESSO_ABORTADA');
  1483 +
  1484 + InfraDebug::getInstance()->gravar('Atualizando sequencia da tabela TAREFA');
  1485 + $rsTabelaTarefa = BancoSEI::getInstance()->consultarSql('select max(id_tarefa) as ultimo from tarefa');
  1486 + if ($rsTabelaTarefa[0]['ultimo'] !== null){
  1487 + $rsSeq = BancoSEI::getInstance()->consultarSql('select max(id) as ultimo from seq_tarefa');
  1488 +
  1489 + if (($rsTabelaTarefa[0]['ultimo'] > $rsSeq[0]['ultimo']) || $rsSeq[0]['ultimo'] === null){
  1490 + BancoSEI::getInstance()->executarSql('alter table seq_tarefa AUTO_INCREMENT = ' . ($rsTabelaTarefa[0]['ultimo'] + 1));
  1491 + }
  1492 +
  1493 + BancoSEI::getInstance()->executarSql('INSERT INTO seq_tarefa (campo) VALUES (null)');
  1494 + $rsSeq = BancoSEI::getInstance()->consultarSql('select max(id) as ultimo from seq_tarefa');
  1495 + }
  1496 +
  1497 + //Altera o parâmetro da versão de banco
  1498 + $objInfraParametroBD = new InfraParametroBD(BancoSEI::getInstance());
  1499 + $objInfraParametroDTO = new InfraParametroDTO();
  1500 + $objInfraParametroDTO->setStrNome(self::PARAMETRO_VERSAO_MODULO);
  1501 + $objInfraParametroDTO->setStrValor('1.1.17');
  1502 + $objInfraParametroBD->alterar($objInfraParametroDTO);
  1503 + }
1414 1504 }
... ...
sip_atualizar_versao_modulo_pen.php
... ... @@ -98,6 +98,7 @@ class PenAtualizarSipRN extends InfraRN {
98 98 case '1.1.13': $this->instalarV1114();
99 99 case '1.1.14': $this->instalarV1115();
100 100 case '1.1.15': $this->instalarV1116();
  101 + case '1.1.16': $this->instalarV1117();
101 102  
102 103 break;
103 104 default:
... ... @@ -1102,10 +1103,22 @@ class PenAtualizarSipRN extends InfraRN {
1102 1103 $objInfraParametroBD->alterar($objInfraParametroDTO);
1103 1104 }
1104 1105  
1105   -
  1106 + /**
  1107 + * Instala/Atualiza os módulo PEN para versão 1.1.17
  1108 + */
  1109 + protected function instalarV1117()
  1110 + {
  1111 + //Corrigir a versão do módulo no banco de dados
  1112 + $objInfraParametroDTO = new InfraParametroDTO();
  1113 + $objInfraParametroDTO->setStrNome(self::PARAMETRO_VERSAO_MODULO);
  1114 + $objInfraParametroDTO->retTodos();
  1115 + $objInfraParametroBD = new InfraParametroBD(BancoSip::getInstance());
  1116 + $objInfraParametroDTO = $objInfraParametroBD->consultar($objInfraParametroDTO);
  1117 + $objInfraParametroDTO->setStrValor('1.1.17');
  1118 + $objInfraParametroBD->alterar($objInfraParametroDTO);
  1119 + }
1106 1120 }
1107 1121  
1108   -
1109 1122 try {
1110 1123 $objAtualizarRN = new PenAtualizarSipRN($arrArgs);
1111 1124 $objAtualizarRN->atualizarVersao();
... ...