Commit 43fc67743d297adffcd36e5d3c8893b9695125f9

Authored by Guilherme Andrade Del Cantoni
1 parent 26dba05c

[Fixed #13] Correção de erro no tratamento de transação do andamento do trâmite

dto/ProcedimentoAndamentoDTO.php
... ... @@ -32,4 +32,11 @@ class ProcedimentoAndamentoDTO extends InfraDTO {
32 32 $this->configurarPK('IdAndamento', InfraDTO::$TIPO_PK_SEQUENCIAL);
33 33 $this->configurarFK('IdTramite', 'md_pen_tramite', 'id_tramite', InfraDTO::$TIPO_FK_OPCIONAL);
34 34 }
  35 +
  36 + public static function criarAndamento($strMensagem = 'Não informado', $strSituacao = 'N') {
  37 + $objProcedimentoAndamentoDTO = new ProcedimentoAndamentoDTO();
  38 + $objProcedimentoAndamentoDTO->setStrSituacao($strSituacao);
  39 + $objProcedimentoAndamentoDTO->setStrMensagem($strMensagem);
  40 + return $objProcedimentoAndamentoDTO;
  41 + }
35 42 }
... ...
rn/ExpedirProcedimentoRN.php
... ... @@ -26,8 +26,8 @@ class ExpedirProcedimentoRN extends InfraRN {
26 26 const TC_TIPO_CONTEUDO_VIDEO = 'vid';
27 27 const TC_TIPO_CONTEUDO_OUTROS = 'out';
28 28  
29   - //TODO: Alterar codificao do SEI para reconhecer esse novo estado do processo
30   - //Esse estado ser utilizado juntamente com os estados da expedio
  29 + //TODO: Alterar codificao do SEI para reconhecer esse novo estado do processo
  30 + //Esse estado ser utilizado juntamente com os estados da expedio
31 31 const TE_PROCEDIMENTO_BLOQUEADO = '4';
32 32 const TE_PROCEDIMENTO_EM_PROCESSAMENTO = '5';
33 33  
... ... @@ -124,17 +124,14 @@ class ExpedirProcedimentoRN extends InfraRN {
124 124 try {
125 125 //Valida Permissão
126 126 SessaoSEI::getInstance()->validarAuditarPermissao('pen_procedimento_expedir',__METHOD__, $objExpedirProcedimentoDTO);
127   -
128 127 $dblIdProcedimento = $objExpedirProcedimentoDTO->getDblIdProcedimento();
129 128  
130 129 $this->barraProgresso->exibir();
131   -
132 130 //Valida regras de negócio
133 131 $this->barraProgresso->mover(ProcessoEletronicoINT::NEE_EXPEDICAO_ETAPA_VALIDACAO);
134 132 $this->barraProgresso->setStrRotulo(ProcessoEletronicoINT::TEE_EXPEDICAO_ETAPA_VALIDACAO);
135 133  
136 134 $objInfraException = new InfraException();
137   -
138 135 //Carregamento dos dados de processo e documento para validação e envio externo
139 136 $objProcedimentoDTO = $this->consultarProcedimento($dblIdProcedimento);
140 137 $objProcedimentoDTO->setArrObjDocumentoDTO($this->listarDocumentos($dblIdProcedimento));
... ... @@ -142,7 +139,6 @@ class ExpedirProcedimentoRN extends InfraRN {
142 139  
143 140 $this->validarPreCondicoesExpedirProcedimento($objInfraException, $objProcedimentoDTO);
144 141 $this->validarParametrosExpedicao($objInfraException, $objExpedirProcedimentoDTO);
145   -
146 142 //Apresentao da mensagens de validao na janela da barra de progresso
147 143 if($objInfraException->contemValidacoes()){
148 144 $this->barraProgresso->mover(0);
... ... @@ -155,10 +151,8 @@ class ExpedirProcedimentoRN extends InfraRN {
155 151  
156 152 //Construo dos cabecalho para envio do processo
157 153 $objCabecalho = $this->construirCabecalho($objExpedirProcedimentoDTO);
158   -
159 154 //Construo do processo para envio
160 155 $objProcesso = $this->construirProcesso($dblIdProcedimento, $objExpedirProcedimentoDTO->getArrIdProcessoApensado());
161   -
162 156 try {
163 157 $param = new stdClass();
164 158 $param->novoTramiteDeProcesso = new stdClass();
... ... @@ -170,14 +164,13 @@ class ExpedirProcedimentoRN extends InfraRN {
170 164 } catch (\Exception $e) {
171 165 throw new InfraException("Error Processing Request", $e);
172 166 }
173   -
174 167 $this->atualizarPenProtocolo($dblIdProcedimento);
175   -
176 168 if (isset($novoTramite->dadosTramiteDeProcessoCriado)) {
177 169 $objTramite = $novoTramite->dadosTramiteDeProcessoCriado;
178 170 $this->objProcedimentoAndamentoRN->setOpts($dblIdProcedimento, $objTramite->IDT, ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO));
179 171 try {
180   - $this->objProcedimentoAndamentoRN->cadastrar('Envio do metadados do processo', 'S');
  172 +
  173 + $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Envio do metadados do processo', 'S'));
181 174 $idAtividadeExpedicao = $this->bloquearProcedimentoExpedicao($objExpedirProcedimentoDTO, $objProcesso->idProcedimentoSEI);
182 175  
183 176 $this->objProcessoEletronicoRN->cadastrarTramiteDeProcesso(
... ... @@ -230,8 +223,7 @@ class ExpedirProcedimentoRN extends InfraRN {
230 223 $this->barraProgresso->setStrRotulo(ProcessoEletronicoINT::TEE_EXPEDICAO_ETAPA_CONCLUSAO);
231 224  
232 225 // @join_tec US008.06 (#23092)
233   - $this->objProcedimentoAndamentoRN->cadastrar('Concluído envio dos componentes do processo', 'S');
234   -
  226 + $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Concluído envio dos componentes do processo', 'S'));
235 227  
236 228 $this->receberReciboDeEnvio($objTramite->IDT);
237 229 }
... ... @@ -253,7 +245,7 @@ class ExpedirProcedimentoRN extends InfraRN {
253 245 $this->registrarAndamentoExpedicaoAbortada($objProcesso->idProcedimentoSEI);
254 246  
255 247 // @join_tec US008.06 (#23092)
256   - $this->objProcedimentoAndamentoRN->cadastrar('Concluído envio dos componentes do processo', 'N');
  248 + $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Concluído envio dos componentes do processo', 'N'));
257 249 throw $e;
258 250 }
259 251 }
... ... @@ -1566,10 +1558,10 @@ class ExpedirProcedimentoRN extends InfraRN {
1566 1558 //Bloquea documento para atualizao, j que ele foi visualizado
1567 1559 $this->objDocumentoRN->bloquearConteudo($objDocumentoDTO);
1568 1560 // @join_tec US008.05 (#23092)
1569   - $this->objProcedimentoAndamentoRN->cadastrar(sprintf('Enviando %s %s', $strNomeDocumento, $objComponenteDigitalDTO->getStrProtocoloDocumentoFormatado()), 'S');
  1561 + $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento(sprintf('Enviando %s %s', $strNomeDocumento, $objComponenteDigitalDTO->getStrProtocoloDocumentoFormatado()), 'S'));
1570 1562 } catch (Exception $e) {
1571 1563 // @join_tec US008.05 (#23092)
1572   - $this->objProcedimentoAndamentoRN->cadastrar(sprintf('Enviando %s %s', $strNomeDocumento, $objComponenteDigitalDTO->getStrProtocoloDocumentoFormatado()), 'N');
  1564 + $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento(sprintf('Enviando %s %s', $strNomeDocumento, $objComponenteDigitalDTO->getStrProtocoloDocumentoFormatado()), 'N'));
1573 1565 throw new InfraException("Error Processing Request", $e);
1574 1566 }
1575 1567 }
... ...
rn/ProcedimentoAndamentoRN.php
... ... @@ -14,20 +14,7 @@ class ProcedimentoAndamentoRN extends InfraRN {
14 14 protected $dblIdTramit;
15 15 protected $numTarefa;
16 16  
17   - /**
18   - * Instância do driver de conexão com o banco de dados
19   - *
20   - * @var Infra[Driver]
21   - */
22   - protected $bancoSEI = null;
23 17  
24   - public function __destruct() {
25   -
26   - if(!empty($this->bancoSEI)) {
27   -
28   - $this->bancoSEI->fecharConexao();
29   - }
30   - }
31 18  
32 19 /**
33 20 * Invés de aproveitar o singleton do BancoSEI criamos uma nova instância para
... ... @@ -35,15 +22,8 @@ class ProcedimentoAndamentoRN extends InfraRN {
35 22 *
36 23 * @return Infra[Driver]
37 24 */
38   - protected function inicializarObjInfraIBanco() {
39   -
40   - if(empty($this->bancoSEI)) {
41   -
42   - $this->bancoSEI = new BancoSEI();
43   - $this->bancoSEI->abrirConexao();
44   - }
45   -
46   - return $this->bancoSEI;
  25 + protected function inicializarObjInfraIBanco(){
  26 + return BancoSEI::getInstance();
47 27 }
48 28  
49 29  
... ... @@ -58,40 +38,29 @@ class ProcedimentoAndamentoRN extends InfraRN {
58 38 /**
59 39 * Adiciona um novo andamento à um procedimento que esta sendo expedido para outra unidade
60 40 *
61   - * @param string $strMensagem
62   - * @param string $strSituacao Tipo ENUM(S,N)
63   - * @return null
  41 + * @param ProcedimentoAndamentoDTO $parProcedimentoAndamentoDTO
64 42 */
65   - public function cadastrar($strMensagem = 'Não informado', $strSituacao = 'N'){
  43 + protected function cadastrarControlado($parProcedimentoAndamentoDTO){
66 44  
67 45 if($this->isSetOpts === false) {
68 46 throw new InfraException('Log do cadastro de procedimento não foi configurado');
69 47 }
70 48  
71   - $objInfraIBanco = $this->inicializarObjInfraIBanco();
72   - $objInfraIBanco->abrirTransacao();
73   -
74   - try{
75   - $hash = md5($this->dblIdProcedimento.$strMensagem);
76   -
77   - $objProcedimentoAndamentoDTO = new ProcedimentoAndamentoDTO();
78   - $objProcedimentoAndamentoDTO->setStrSituacao($strSituacao);
79   - $objProcedimentoAndamentoDTO->setDthData(date('d/m/Y H:i:s'));
80   - $objProcedimentoAndamentoDTO->setDblIdProcedimento($this->dblIdProcedimento);
81   - $objProcedimentoAndamentoDTO->setDblIdTramite($this->dblIdTramit);
82   - $objProcedimentoAndamentoDTO->setStrSituacao($strSituacao);
83   - $objProcedimentoAndamentoDTO->setStrMensagem($strMensagem);
84   - $objProcedimentoAndamentoDTO->setStrHash($hash);
85   - $objProcedimentoAndamentoDTO->setNumTarefa($this->numTarefa);
86   -
87   - $objProcedimentoAndamentoBD = new ProcedimentoAndamentoBD($objInfraIBanco);
88   - $objProcedimentoAndamentoBD->cadastrar($objProcedimentoAndamentoDTO);
89   -
90   - $objInfraIBanco->confirmarTransacao();
91   -
92   - } catch (Exception $e) {
93   - $objInfraIBanco->cancelarTransacao();
94   - throw $e;
95   - }
  49 + $strMensagem = ($parProcedimentoAndamentoDTO->isSetStrMensagem()) ? $parProcedimentoAndamentoDTO->getStrMensagem() : 'Não informado';
  50 + $strSituacao = ($parProcedimentoAndamentoDTO->isSetStrSituacao()) ? $parProcedimentoAndamentoDTO->getStrSituacao() : 'N';
  51 +
  52 + $hash = md5($this->dblIdProcedimento . $strMensagem);
  53 + $objProcedimentoAndamentoDTO = new ProcedimentoAndamentoDTO();
  54 + $objProcedimentoAndamentoDTO->setStrSituacao($strSituacao);
  55 + $objProcedimentoAndamentoDTO->setDthData(date('d/m/Y H:i:s'));
  56 + $objProcedimentoAndamentoDTO->setDblIdProcedimento($this->dblIdProcedimento);
  57 + $objProcedimentoAndamentoDTO->setDblIdTramite($this->dblIdTramit);
  58 + $objProcedimentoAndamentoDTO->setStrSituacao($strSituacao);
  59 + $objProcedimentoAndamentoDTO->setStrMensagem($strMensagem);
  60 + $objProcedimentoAndamentoDTO->setStrHash($hash);
  61 + $objProcedimentoAndamentoDTO->setNumTarefa($this->numTarefa);
  62 +
  63 + $objProcedimentoAndamentoBD = new ProcedimentoAndamentoBD($this->getObjInfraIBanco());
  64 + $objProcedimentoAndamentoBD->cadastrar($objProcedimentoAndamentoDTO);
96 65 }
97 66 }
... ...
rn/ReceberProcedimentoRN.php
... ... @@ -188,7 +188,7 @@ class ReceberProcedimentoRN extends InfraRN
188 188  
189 189 // @join_tec US008.08 (#23092)
190 190 $this->objProcedimentoAndamentoRN->setOpts($objProcedimentoDTO->getDblIdProcedimento(), $parNumIdentificacaoTramite, ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO));
191   - $this->objProcedimentoAndamentoRN->cadastrar('Obtendo metadados do processo', 'S');
  191 + $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Obtendo metadados do processo', 'S'));
192 192  
193 193  
194 194 $this->gravarLogDebug("Registrando trâmite externo do processo", 4);
... ... @@ -246,15 +246,15 @@ class ReceberProcedimentoRN extends InfraRN
246 246  
247 247 // @join_tec US008.09 (#23092)
248 248 $strMensagemRecebimento = sprintf('Recebendo %s %s', $strNomeDocumento, $objComponenteDigitalDTOEnviado->getStrProtocoloDocumentoFormatado());
249   - $this->objProcedimentoAndamentoRN->cadastrar($strMensagemRecebimento, 'S');
  249 + $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento($strMensagemRecebimento, 'S'));
250 250 $this->gravarLogDebug($strMensagemRecebimento, 6);
251 251 }
252 252 }
253 253 // @join_tec US008.10 (#23092)
254   - $this->objProcedimentoAndamentoRN->cadastrar('Todos os componentes digitais foram recebidos', 'S');
  254 + $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Todos os componentes digitais foram recebidos', 'S'));
255 255  
256 256 }else{
257   - $this->objProcedimentoAndamentoRN->cadastrar('Nenhum componente digital para receber', 'S');
  257 + $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Nenhum componente digital para receber', 'S'));
258 258 }
259 259 }
260 260 }
... ...
rn/ReceberReciboTramiteRN.php
... ... @@ -202,7 +202,7 @@ class ReceberReciboTramiteRN extends InfraRN
202 202 $objProtocoloDTO = $objProtocoloBD->consultar($objProtocoloDTO);
203 203  
204 204 $this->objProcedimentoAndamentoRN->setOpts($objProcessoEletronicoDTO->getDblIdProcedimento(), $parNumIdTramite, ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO));
205   - $this->objProcedimentoAndamentoRN->cadastrar(sprintf('Trâmite do processo %s foi concluído', $objProtocoloDTO->getStrProtocoloFormatado()), 'S');
  205 + $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento(sprintf('Trâmite do processo %s foi concluído', $objProtocoloDTO->getStrProtocoloFormatado()), 'S'));
206 206 //Registra o recbimento do recibo no histórico e realiza a conclusão do processo
207 207 $this->registrarRecebimentoRecibo($objProtocoloDTO->getDblIdProtocolo(), $objProtocoloDTO->getStrProtocoloFormatado(), $parNumIdTramite);
208 208 $objPenTramiteProcessadoRN = new PenTramiteProcessadoRN(PenTramiteProcessadoRN::STR_TIPO_RECIBO);
... ...