/
Historico_Integração de outros sistemas com Athenas

Historico_Integração de outros sistemas com Athenas

Definições:

  • Consultas de informações básicas sobre funcionários disponível em dti_pessoas(Oracle)
  • Consultas sobre histórico de informações financeiras direto no postgres
  • Analistas ficarão responsáveis por criar as views
  • Analistas ficarão responsáveis por analisar possíveis erros na informação direto nas views
  • Os analistas primários serão os do Athenas
  • Os analistas de cada sistema integração terão liberdade para modificar e corrigir as views relacionada aos seus sistemas
  • Padrão de nomeclatura vw_integração_*
  • APLIC, Portal Transparência e Aposentados consultará direto no postgres as informações somente via view
  • Criar usuário especifico para cada aplicação
  • JIRA - Infra - Criar login especifico por usuário com restrição de permissão
  • JIRA - restringir acesso ao banco produção a gerencia de banco de dados

Integração parte A - Dados dos Funcionários

  • Disponivel no schema dti_pessoas.funcionário 
  • Focar no consumo de dados basicos, como nome, email, matricula, cpf, ...

Integração parte B - Outros dados historicos

  • Views no postgres


Nome da ViewSistemas que utilizamObservações sobre a sincronização

vw_integracao_contracheque

 Histórico
  • 03/12/2021 - Disponível em produção, dados não validados
  1. Portal do Aposentado
  • Total diariamente
  • Retorna dados somente a partir 2021

view_integracao_aposentados

 Histórico
  • 06/12/2021 - Disponível em produção, dados não validados
  1. SAS
  2. Portal do Aposentado

Total diariamente

view_integracao_pensao_morte

 Histórico
  • 06/12/2021 - Disponível em produção, dados não validados
1. SASTotal diariamente


Avaliação das estratégias de banco de dados:

  • Simplicidade para entendimento
  • Solução de Longo Prazo (vários anos)
  • Fácil para análise e correções

Análise das estratégias de migração

xPrósContra

Consulta Direto Postgres

Consulta Direto Oracle

  • Elimina a migração de dados
  • Dados em tempo real
  • 2 fontes de informação
  • Limita a possibilidade de joins tornandos as consultas mais lentas e implementação mais complexa
  • Maior custo no caso de migração do Athenas para o Oracle
  • Maior custo no caso de trocar o Athenas

Dados dos Funcionários - Oracle

Dados Histórico Financeiro - Postgres

(Estratêgia atual)

  • Diminui a necessidade de integração
  • Parte dos dados em tempo real
  • 2 fontes de informação
  • Limita a possibilidade de joins tornandos as consultas mais lentas e implementação mais complexa
  • Maior custo no caso de migração do Athenas para o Oracle
  • Maior custo no caso de trocar o Athenas

Consulta somente Oracle


  • Fonte de informação Única
  • Consultas mais rápidas com join entre as tabelas de vários sistemas
  • Menor necessidade de alteração nos sistemas existentes
  • Pode ser totalmente automatizado
  • Pode ser monitorado dentro do Athenas
  • Versionamento automático das views - JIRA
  • Menor custo no caso de migração para o Athenas
  • Menor custo no caso de troca do Athenas
  • Dependente da integração
  • Precisa ser dinâmica para se adaptar as modificações das views
  • Dados com defasagem temporal

Consulta DBLink

  • Solução de integração mais simples
  • Tempo real
  • Possibilidade de parar Athenas e Oracle
  • Problema com Tipos de dados
  • Problema com Charset
  • Não aceita Boolean
  • Não pode fazer multíplas consultas sequenciais com risco de travar o sistema
Integração 100% WS
  • Muito lento
  • Custoso para implementar
  • Vai exigir grande adaptação no sistemas existentes


Anotações:

 view_integracao_aposentados

create view vw_integracao_aposentados
(servidor_id, nome, matricula, data_inicio, data_fim, portaria_ato, portaria_publicacao, classificacao_cod,
classificacao_nome, email, cargo_efetivo_id)
as
SELECT
A.*,
rh_cargo.NOME cargo_efetivo_NOME
FROM (
SELECT rh_servidor.id AS servidor_id,
rh_pessoa.nome,
rh_servidor.matricula,
rh_movposse.data_exercicio AS data_inicio,
rh_movposse.data_desligamento AS data_fim,
rh_publicacao.cache_unicode AS portaria_ato,
rh_publicacao.data_publicacao AS portaria_publicacao,
rh_servidor.type_by_possession AS classificacao_cod,
rh_servidor_type_by_possession_description(rh_servidor.type_by_possession) AS classificacao_nome,
rh_pessoafisica.email_pessoal AS email,
(SELECT rh_cargo.id
FROM rh_servidor rh_servidor_1
JOIN rh_pessoafisica pf ON rh_servidor_1.pessoa_fisica_id = pf.pessoa_ptr_id
JOIN rh_pessoa rh_pessoa_1 ON rh_pessoafisica.pessoa_ptr_id = rh_pessoa_1.id
JOIN rh_movpessoal rh_movpessoal_1 ON rh_servidor_1.id = rh_movpessoal_1.servidor_id
JOIN rh_movposse rh_movposse_1 ON rh_movpessoal_1.id = rh_movposse_1.movimentacaopessoal_ptr_id
JOIN rh_quadro ON rh_movposse_1.quadro_id = rh_quadro.id
JOIN rh_cargo ON rh_quadro.cargo_id = rh_cargo.id
WHERE pf.cpf::text = rh_pessoafisica.cpf::text
AND rh_cargo.tipo_lei_cargo::text = 'EF'::text
ORDER BY rh_movposse_1.data_exercicio DESC
LIMIT 1) AS cargo_efetivo_id
FROM rh_servidor
JOIN rh_pessoafisica ON rh_servidor.pessoa_fisica_id = rh_pessoafisica.pessoa_ptr_id
JOIN rh_pessoa ON rh_pessoafisica.pessoa_ptr_id = rh_pessoa.id
JOIN rh_movpessoal ON rh_servidor.id = rh_movpessoal.servidor_id
JOIN rh_movposse ON rh_movpessoal.id = rh_movposse.movimentacaopessoal_ptr_id
JOIN rh_publicacao ON rh_movpessoal.publicacao_movimentacao_id = rh_publicacao.id
WHERE rh_servidor.type_by_possession::text = ANY
(ARRAY ['APS'::character varying, 'MAP'::character varying, 'SAP'::character varying]::text[])
) A
INNER JOIN RH_CARGO ON A.cargo_efetivo_id = RH_CARGO.ID ;



 vw_integracao_pensao_morte


CREATE OR REPLACE VIEW vw_integracao_pensao_morte AS
SELECT
instituidor_pessoa.nome NOME_INSTITUIDOR_PENSAO,
(
SELECT rh_cargo.id FROM RH_SERVIDOR
inner join rh_movpessoal on rh_servidor.id = rh_movpessoal.servidor_id
inner join rh_movposse on rh_movpessoal.id = rh_movposse.movimentacaopessoal_ptr_id
inner join rh_quadro on rh_movposse.quadro_id = rh_quadro.id
inner join rh_cargo on rh_quadro.cargo_id = rh_cargo.id
WHERE
rh_servidor.ID = A.INSTITUIDOR_ID AND
rh_cargo.tipo_lei_cargo in ('EF')
order by rh_movposse.data_exercicio desc
limit 1
) INSTITUIDOR_PENSAO_CARGO_ID,
A.*
FROM (
select servidor_id SERVIDOR_ID,
founder_employee_id INSTITUIDOR_ID,
nome NOME,
matricula MATRICULA,
cpf CPF,
rh_servidor.type_by_possession CLASSIFICACAO_COD,
rh_servidor_type_by_possession_description(rh_servidor.type_by_possession) CLASSIFICACAO_NOME,
rh_benefitmovement.quota quota,
rh_movposse.data_exercicio DATA_INICIO,
rh_movposse.data_desligamento DATA_FIM,
email_pessoal email
from rh_servidor
inner join rh_pessoafisica rp on rh_servidor.pessoa_fisica_id = rp.pessoa_ptr_id
inner join rh_pessoa on rp.pessoa_ptr_id = rh_pessoa.id
inner join rh_movpessoal on rh_servidor.id = rh_movpessoal.servidor_id
inner join rh_movposse on rh_movpessoal.id = rh_movposse.movimentacaopessoal_ptr_id
inner join rh_benefitmovement on rh_movposse.movimentacaopessoal_ptr_id =
rh_benefitmovement.movimentacaoposse_ptr_id
) A
left join rh_servidor instituidor_pensao on instituidor_pensao.id = a.INSTITUIDOR_ID
inner join rh_pessoafisica on instituidor_pensao.pessoa_fisica_id = rh_pessoafisica.pessoa_ptr_id
inner join rh_pessoa instituidor_pessoa on rh_pessoafisica.pessoa_ptr_id = instituidor_pessoa.id;





-- postgres.vw_integracao_holerite_portal_aposentados_e_pensionistas
CREATE OR REPLACE VIEW vw_integracao_holerite_portal_aposentados_e_pensionistas AS
select CONCAT(ANO, LPAD(CAST(MES AS VARCHAR), 2,'0')) COMPETENCIA,
rh_servidor.matricula MATRICULA,
rh_pessoa.nome NOME,
rh_pessoafisica.cpf CPF,
rh_servidor.ATIVO ATIVO,
rh_pessoafisica.email_pessoal EMAIL,
cargoatual(rh_servidor.id) CARGO_NOME,
rh_lotacao_servidor(rh_servidor.id) LOTACAO_NOME,
rh_banco.numero CONTA_BANCO_CODIGO,
rh_dadobancario.conta_corrente_completa CONTA_NUMERO,
rh_dadobancario.agencia CONTA_AGENCIA,
gfp_contracheque.total_bruto TOTAL_BRUTO,
gfp_contracheque.total_liquido TOTAL_LIQUIDO,
gfp_evento.numero EVENTO_CODIGO,
gfp_evento.titulo EVENTO_DESCRICAO,
gfp_evento.tipo EVENTO_TIPO,
gfp_folha.dt_pagamento FOLHA_DATA_PAGAMENTO,
gfp_folhaevento.parcela EVENTO_REFERENCIA,
gfp_folhaevento.correct_valor EVENTO_VALOR,
gfp_folhatipo.titulo EVENTO_ROTEIRO,
gfp_contracheque.dependentes_ir EVENTO_TOTAL_DEPENDENTES_IR
from gfp_folha
inner join gfp_folhatipo on gfp_folha.tipo_folha_id = gfp_folhatipo.id
inner join gfp_periodo on gfp_folha.periodo_id = gfp_periodo.id
inner join gfp_contracheque on gfp_folha.id = gfp_contracheque.folha_id
inner join rh_servidor on gfp_contracheque.servidor_id = rh_servidor.id
inner join rh_pessoafisica on rh_servidor.pessoa_fisica_id = rh_pessoafisica.pessoa_ptr_id
inner join rh_pessoa on rh_pessoafisica.pessoa_ptr_id = rh_pessoa.id
inner join rh_dadobancariopessoa
on gfp_contracheque.dado_bancario_pessoa_id = rh_dadobancariopessoa.dadobancario_ptr_id
inner join rh_dadobancario on rh_dadobancariopessoa.dadobancario_ptr_id = rh_dadobancario.id
inner join rh_banco on rh_dadobancario.banco_id = rh_banco.id
INNER JOIN gfp_folhaevento ON gfp_contracheque.id = gfp_folhaevento.contracheque_id
inner join gfp_evento on gfp_folhaevento.evento_id = gfp_evento.id
where 1=1
AND matricula = 6564 AND ANO = 2021 AND MES = 11
ORDER BY MATRICULA;



select * from VW_INTEGRACAO_HOLERITE_PORTAL_APOSENTADOS_E_PENSIONISTAS where CPF = '03115732155' AND COMPETENCIA = '202111';



Related content

Historico_Sistemas Integrado
Historico_Sistemas Integrado
More like this
Historico_Segregação de Massa
Historico_Segregação de Massa
More like this
Historico_24/08/2021 - Primeira Reunião de Levantamento
Historico_24/08/2021 - Primeira Reunião de Levantamento
More like this
Historico_Gestão de Faltas
Historico_Gestão de Faltas
More like this
Historico_Colunas e Tabelas
Historico_Colunas e Tabelas
More like this
Historico_Raio X do projeto
Historico_Raio X do projeto
More like this