def cadastraConfigTabela(): ''' FUNÇÃO PARA CRIAR NO BANCO A TABELA DE CONFIGURAÇÃPO DO BANCO DE DADO ENTRA TABELA DE CONFIGURAÇÃO DO BANCO "_BANCO_DOC_END_REL.xlsx SAI TABELA CADASTRADA NO BANCO MYSQL "ts_sis__config_tabelas" ''' # LÊ A PLANILHA COM OS DADOS dados = pd.read_excel('_MYSQLBANCO\_BANCO_DOC_END_REL.xlsx') dados.fillna('', inplace=True) # DELETA OS DADOS DA TABELA NO BANCO sql = 'delete from ts_sis__config_tabelas;' sqlexecute(sql) sql = '' for vl in dados.values: sql += "( {0}, '{1}', '{2}', '{3}', '{4}', '{5}', '{6}'),\n".format( vl[0], vl[1], vl[2], vl[3], vl[4], vl[5], vl[6]) sql = 'Insert into ts_sis__config_tabelas \nvalues\n' + sql[0:-2] + ';' sqlexecute(sql) mensagemInformacao('Tabela de configuração importada com sucesso.')
def servidoresNaData(): ''' FUNÇÃO PARA VOLTAR EM UMA DETERMINADA DATA ENTRA DATA SAI PLANILHA (CSV) DOS SERVIDORES ATIVOS NA DATA ''' data = input('Qual é a data') sql = '''select GR_MATRICULA, IT_NO_SERVIDOR, DES_CARREIRA, DES_CARGO, INSTITUTO, DES_GRUPO, IT_DA_OCOR_INGR_ORGAO_SERV, IT_DA_OCOR_INATIVIDADE_SERV, IT_DA_OCOR_EXCLUSAO_SERV from tb_ser_rel where DES_CARREIRA in ('PROF 3º', 'PROF 2º', 'TÉCN', 'TÉCN-ESP') AND GR_MATRICULA IN ( -- ATIVOS SELECT GR_MATRICULA FROM talentoshumanos.tb_ser_rel where IT_DA_OCOR_INGR_ORGAO_SERV <= '{0}' and IT_DA_OCOR_INATIVIDADE_SERV IS NULL and IT_DA_OCOR_EXCLUSAO_SERV IS NULL union -- APOSENTADO SELECT GR_MATRICULA FROM talentoshumanos.tb_ser_rel where IT_DA_OCOR_INGR_ORGAO_SERV <= '{0}' and IT_DA_OCOR_INATIVIDADE_SERV > '{0}' and IT_DA_OCOR_EXCLUSAO_SERV IS NULL UNION -- APOSENTADO - FALECIDO SELECT GR_MATRICULA FROM talentoshumanos.tb_ser_rel where IT_DA_OCOR_INGR_ORGAO_SERV <= '{0}' and IT_DA_OCOR_INATIVIDADE_SERV > '{0}' and IT_DA_OCOR_EXCLUSAO_SERV > '{0}' UNION -- DESLIGADOS SELECT GR_MATRICULA FROM talentoshumanos.tb_ser_rel where IT_DA_OCOR_INGR_ORGAO_SERV <= '{0}' and IT_DA_OCOR_INATIVIDADE_SERV IS NULL and IT_DA_OCOR_EXCLUSAO_SERV > '{0}' );'''.replace('{0}', data) dados = sqlpandas(sql) if len(dados) > 0: salvarPandas(dados, 'SERVIDORES NA DATA - {0}'.format(data)) mensagemInformacao('Relatório dos Servidores na DAta criado com sucesso.') else: mensagemErro('Relatório dos Gestores não foi criado.')
def enderecos(): ''' FUNÇÃO PARA PEGAR O ARQUIVO DO EXTRATOR DE DADOS (ENDEREÇOS) E TRANSFORMAR PARA IMPORTAÇÃO NO BANCO MYSQL ENTRA NULL (OBS: OS ARQUIVOS DO EXTRATOR (TXT) E (REF) DEVERÃO ESTAR NA PASTA ENDERECOS) SAI ARQUIVO (TXT) E (CSV) PARA IMPORTAÇÃO NO BANCO DE DADOS ''' dados = sqlpandas( '''SELECT campo FROM talentoshumanos.ts_sis__config_tabelas where tabela = 'ENDERECOS';''') campos = list(dados['campo']) # PEGAR OS ARQUIVOS ENDEREÇO (TXT) E (REF) layoutEND = pegarLayout(caminhoEND) valoresEND = pegarValores(caminhoEND) if len(layoutEND) > 0: # LOOP NOS ARQUIVOS for numero in range(0, len(layoutEND)): # TRANSFORMA ARQUIVOS (TXT) EM TABELA (LIST) tb = layoutValorTabela(layoutEND[numero], valoresEND[numero]) # PEGAR O NOME DOS CAMPOS titulo = list(layoutEND[numero].keys()) # TRANSFORMAR TABELA (LIST) EM DADOS (DATAFRAME) dados = tabelaToPandas(tb, titulo) # FILTRA O DATAFRAME (DATAFRAME) dados = dados[campos] # CORRIGE A MATRÍCULA RETIRANDO O NÚMERO DO ÓRGÃO correcao = dados['GR_MATRICULA_SERV_DISPONIVEL'].apply(lambda x: x[5:]) dados['GR_MATRICULA_SERV_DISPONIVEL'] = correcao # SALVA O SQL DOS DADOS sqltxt = pandasInsert('tb_ser_end', dados) # SALVA O CSV DOS DADOS pandasExport('Enderecos', dados) mensagemInformacao('Arquivo ENDEREÇO gerado.') return sqltxt else: mensagemErro('Arquivo ENDEREÇO não encontrado.')
def arquivosExtrator(): ''' FUNÇÃO PARA PEGAR O ARQUIVO DO EXTRATOR DE DADOS E TRANSFORMAR PARA IMPORTAÇÃO NO BANCO MYSQL ENTRA NULL (OBS: OS ARQUIVOS DO EXTRATOR (TXT) E (REF) DEVERÃO ESTAR NA PASTA OUTROS) SAI ARQUIVO (TXT) E (CSV) PARA IMPORTAÇÃO NO BANCO DE DADOS ''' # PEGAR OS ARQUIVOS DOCUMENTOS (TXT) E (REF) layoutOUTROS = pegarLayout(caminhoOUTROS) valoresOUTROS = pegarValores(caminhoOUTROS) if len(layoutOUTROS) > 0: # LOOP NOS ARQUIVOS dadostodos = pd.DataFrame() for numero in range(0, len(layoutOUTROS)): # TRANSFORMA ARQUIVOS (TXT) EM TABELA (LIST) tb = layoutValorTabela(layoutOUTROS[numero], valoresOUTROS[numero]) # PEGAR O NOME DOS CAMPOS titulo = list(layoutOUTROS[numero].keys()) # TRANSFORMAR TABELA (LIST) EM DADOS (DATAFRAME) dados = tabelaToPandas(tb, titulo) # EXCLUIR O 'GR_MATRICULA' DAS TABELAS - POIS A PRIMEIRA TABELA JÁ TEM if numero > 0: dados = dados.drop(columns=['GR_MATRICULA']) # JUNTAR AS TABELAS (DATAFRAME) EM UM SÓ ARQUIVO dadostodos = pd.concat([dados, dadostodos], axis=1) # PROCURA E CORRIGE AS DATAS DO DATAFRAME(DATAFRAME) {'00000000' == ''} for coluna in dadostodos.columns: if coluna.count('_DA_') > 0: values = dadostodos[coluna].apply( lambda x: '' if str(x) == '00000000' else x) dadostodos[coluna] = values # SALVA O SQL DOS DADOS pandasInsert('TB_OUTROS', dadostodos) # SALVA O CSV DOS DADOS pandasExport('OUTROS', dadostodos) mensagemInformacao('Arquivo OUTROS gerado.') else: mensagemErro('Arquivo OUTROS não encontrado.')
def importarChefias(): ''' FUNÇÃO PARA IMPORTAR AS CHEFIAS PARA O BANCO DE DADOS ENTRA PLANILHA DE CHEFIAS DA DIVISÃO DE CADASTRO SAI BANCO DE DADOS ATUALIZADOS COM AS CHEFIAS ''' listdir = os.listdir('DADOS_EXTRATOR\\') if 'Relação de Chefias.xlsx' in listdir: xls = 'DADOS_EXTRATOR\\Relação de Chefias.xlsx' folha = 'FG E CD - ATIVOS' arq = pd.read_excel(xls, folha) dados = arq[['SIAPE', 'FUNÇÃO', 'CARGO', 'DOC. LEGAL']].copy() dados.dropna(inplace=True, axis=0) planilha = [['GR_MATRICULA', 'CD_FUNCAO', 'CARGO', 'DOC_LEGAL']] for i in dados.values: aux = [] aux.append(str(int(i[0])).rjust(7, '0')[0:7]) aux.append(i[1]) aux.append(i[2]) aux.append(i[3]) planilha.append(aux) sql = '''delete from ts_sis_chefias;''' sqlexecute(sql) sql = '''INSERT INTO ts_sis_chefias\n(GR_MATRICULA, CD_FUNCAO, CARGO, DOC_LEGAL)\nvalues\n''' contador = len(planilha[1:]) for i in planilha[1:]: contador -= 1 if contador != 0: sql += '(' + str(i)[1:-1] + '),\n' else: sql += '(' + str(i)[1:-1] + ');' sqlexecute(sql) mensagemInformacao('Importação da LISTA DE CHEFIAS concluída.') else: mensagemErro('Arquivo Relação de Chefias.xlsx não encontrado.')
def agentespublicos(): ''' FUNÇÃO PARA CRIAR OS AGENTES PÚBLICOS ENTRA NULL SAI PLANILHA DOS AGENTES PÚBLICOS DO MÊS ''' sql = '''SELECT a.IT_NO_SERVIDOR AS 'SERVIDOR', a.GR_MATRICULA AS 'SIAPE', a.DES_CARGO AS 'CARGO', b.CARGO AS 'FUNÇÃO', a.DES_LOTACAO AS 'LOTAÇÃO', A.IT_DA_OCOR_INGR_ORGAO_SERV AS 'DT EXERCÍCIO', a.IT_DA_PUBL_DIPL_INGR_ORGAO AS 'DT PUBLICAÇÃO', a.IT_CO_VAGA AS 'ATO NOMEAÇÃO', case when c.ORGAO <> '' then c.orgao ELSE 'UFTM' end AS 'ÓRGÃO', a.DES_UPAG AS 'UPAG', a.DES_grupo AS 'GRUPO' FROM tb_ser_rel AS a LEFT JOIN ts_sis_chefias AS b ON a.GR_MATRICULA = b.GR_MATRICULA LEFT JOIN ts_sis_cedidos AS c ON a.gr_matricula = c.gr_matricula WHERE IT_DA_OCOR_EXCLUSAO_SERV IS NULL AND IT_DA_OCOR_INATIVIDADE_SERV IS NULL AND DES_CARREIRA IN ('TÉCN' , 'TÉCN-ESP', 'PROF 2º', 'PROF 3º') ORDER BY 1;''' dados = sqlpandas(sql) if len(dados) > 0: salvarPandas(dados, 'PUBLICAÇÕES - AGENTES PÚBLICOS') mensagemInformacao( 'Relatório dos AGENTES PÚBLICOS criado com sucesso.') else: mensagemErro('Relatório dos AGENTES PÚBLICOS não foi criado.')
def arquivoservidoresdeficientes(): ''' FUNÇÃO PARA GERAR A LSITA DE SERVIDORES DEFICIENTES DA UFTM ENTRA NULL SAI LISTA DE SERVIDORES DEFICIENTES DA UFTM ''' sql = '''SELECT b.IT_DA_OCOR_EXCLUSAO_SERV as 'DT DELIGADO', b.IT_DA_OCOR_INATIVIDADE_SERV AS 'DT APOSENTADO', b.GR_MATRICULA as 'SIAPE', b.IT_NO_SERVIDOR AS 'SERVIDOR', b.IT_DA_NASCIMENTO AS 'DT NASCIMENTO', b.IT_CO_SEXO AS 'SEXO', b.DES_ESCOLARIDADE AS 'ESCOLARIDADE', b.DES_TITULACAO AS 'TITULAÇÃO', b.DES_CARREIRA AS 'CARREIRA', b.DES_CARGO AS 'CARGO', b.DES_LOTACAO AS 'LOTAÇÃO', b.AMBIENTE AS 'AMBIENTE', b.EXERCICIO AS 'EXERCÍCIO', b.INSTITUTO AS 'INSTITUTO', b.DEPARTAMENTO AS 'DEPARTAMENTOS', b.DES_GRUPO AS 'GRUPO', b.DES_UPAG AS 'UPAG', b.IT_CO_JORNADA_TRABALHO AS 'CH', a.tipo_deficiencia AS 'TIPO-COD', a.COD_SIAPECAD FROM ts_sis_deficientes AS A JOIN tb_ser_rel AS B ON A.GR_MATRICULA = B.GR_MATRICULA ORDER BY 4;''' dados = sqlpandas(sql) if len(dados) > 0: salvarPandas(dados, 'SERVIDORES DEFICIENTES') mensagemInformacao( 'Relatório dos servidores deficientes criado com sucesso.') else: mensagemErro('Relatório dos servidores deficientes não foi criado.')
def docentespordepartamentos(): ''' FUNÇÃO PARA CRIAR OS DOCENTES POR DEPARTAMENTO ENTRA NULL SAI PLANLHA DOS DOCENTES POR DEPARTAMENTO DO MÊS ''' sql = '''SELECT A.GR_MATRICULA AS 'SIAPE', A.IT_NO_SERVIDOR AS 'SERVIDOR', A.IT_CO_JORNADA_TRABALHO AS 'CH', A.DES_TITULACAO AS 'TITULAÇÃO', A.DES_LOTACAO AS 'LOTAÇÃO', A.INSTITUTO AS 'INSTITUTO', A.DEPARTAMENTO AS 'DEPARTAMENTO', A.DES_CARREIRA AS 'CARREIRA', A.DES_CARGO AS 'CARGO', A.DES_CLASSE AS 'CLASSE', A.DES_REGIME_JURIDICO AS 'REGIME JURÍDICO', b.CARGO AS 'FUNÇÃO' FROM tb_ser_rel AS A left join ts_sis_chefias as b on a.GR_MATRICULA = b.GR_MATRICULA WHERE IT_DA_OCOR_EXCLUSAO_SERV is null and IT_DA_OCOR_INATIVIDADE_SERV is null AND DES_CARREIRA = 'PROF 3º' order by SERVIDOR; ''' dados = sqlpandas(sql) if len(dados) > 0: dados['TITULAÇÃO'] = dados['TITULAÇÃO'].apply(lambda x: x[3:]) salvarPandas(dados, 'PUBLICAÇÕES - DOCENTES POR DEPARTAMENTO') mensagemInformacao( 'Relatório dos DOCENTES POR DEPARTAMENTO criado com sucesso.') else: mensagemErro('Relatório dos DOCENTES POR DEPARTAMENTO não foi criado.')
def servidoresanoano(): ''' FUNÇÃO PARA CRIAR A TABELA ANO A ANO, COM ENTRADA E SAÍDA DOS SERVIDORES ENTRA NULL SAI RELATÓRIO ANO A ANO EM CSV (CSV) ''' sql = ''' SELECT A.*, IT_NO_SERVIDOR AS 'SERVIDOR', B.DES_ETNIA AS 'ETNIA', B.DES_NACIONALIDADE AS 'NACIONALIDADE', b.DES_REGIME_JURIDICO AS 'REG-JUR', B.DES_CARREIRA AS 'CARREIRA', B.DES_CARGO AS 'CARGO', B.DES_GRUPO AS 'GRUPO', B.DES_UPAG AS 'UPAG', B.IT_CO_JORNADA_TRABALHO AS 'CH', B.IT_DA_OCOR_INGR_SPUB_SERV AS 'DT I SP', B.IT_DA_OCOR_INGR_ORGAO_SERV AS 'DT I O', B.IT_DA_OCOR_INATIVIDADE_SERV AS 'DT APO', B.IT_DA_OCOR_EXCLUSAO_SERV AS 'DT DES', b.email FROM anoano AS A join tb_ser_rel AS B ON A.SIAPE=B.GR_MATRICULA; ''' dados = sqlpandas(sql) if len(dados) > 0: dados.sort_values(['SERVIDOR', 'SIAPE'], inplace=True) salvarPandas(dados, 'SERVIDORES ANO-ANO') mensagemInformacao( 'Relatório dos servidores - ANO-ANO - criados com sucesso.') else: mensagemErro( 'Relatório dos servidores - ANO-ANO - criados com sucesso.')
def ServidoresGestores(): ''' FUNÇÃO PARA CRIAR A LISTA DE SERVIDORES GESTORES ENTRA NULL SAI LISTA DE SERVIDORES GESTORES ''' sql = """SELECT A.CD_FUNCAO AS 'CD FUNÇÃO', a.cargo AS 'FUNÇÃO', a.DOC_LEGAL AS 'DOC LEGAL', B.GR_MATRICULA AS SIAPE, B.IT_NO_SERVIDOR AS SERVIDOR, B.IDADE, B.IT_CO_SEXO AS SEXO, B.DES_TITULACAO AS TITULAÇÃO, B.DES_ETNIA AS ETNIA, b.EMAIL, B.DES_REGIME_JURIDICO AS 'REG JUR', B.IT_CO_JORNADA_TRABALHO AS 'CARGA HORÁRIA', B.DES_CARREIRA AS CARREIRA, B.DES_CARGO AS CARGO, B.DES_GRUPO AS GRUPO, B.DES_LOTACAO AS 'LOTAÇÃO', B.DES_UPAG AS UPAG FROM ts_sis_chefias AS A JOIN tb_ser_rel AS B ON A.GR_MATRICULA = B.GR_MATRICULA;""" dados = sqlpandas(sql) if len(dados) > 0: salvarPandas(dados, 'SERVIDORES GESTORES') mensagemInformacao('Relatório dos Gestores criados com sucesso.') else: mensagemErro('Relatório dos Gestores não foi criados.')
def importarEmailServidor(): ''' FUNÇÃO PARA ATULALIZAR OS EMAIL DOS SEVIDORES QUE INGRESSARAM NA UFTM ENTRA PLANILHA COM OS DADOS DOS SERVIDORES SAI SAIR O BANCO DE DADO ATUALIZADO ''' listdir = os.listdir('DADOS_EXTRATOR\\') if 'servidores.xlsx' in listdir: sql = '''select GR_MATRICULA, IT_NO_SERVIDOR, IT_NU_CPF, DES_CARREIRA, DES_CARGO, EMAIL from tb_ser_rel WHERE EMAIL IS NULL AND IT_DA_OCOR_INATIVIDADE_SERV IS NULL AND IT_DA_OCOR_EXCLUSAO_SERV IS NULL order by it_no_servidor;''' vl, tb = sqlpesquisar(sql) if vl == 1: xls = 'DADOS_EXTRATOR\\servidores.xlsx' folha = 'Servidores' arq = pd.read_excel(xls, folha) dados = arq dc = {} for i in tb: email = dados[dados['Siape'] == int(i[0])]['Email'] if email.count() >= 1: dc[i[2]] = email.values[0] for i in dc: sql = '''INSERT INTO ts_sis_email VALUES ('{0}', '{1}');'''.format(i, dc[i]) sqlexecute(sql) mensagemInformacao('Importação do E-MAIL concluída.') else: mensagemErro('Arquivo "servidores.xlsx" não encontrado. (E-MAIL)')
def importarAmbienteServidores(): ''' FUNÇÃO IMPORTAR AMBIENTE E EXERCÍCIO DOS SERVIDORES PARA O BANCO DE DADOS ENTRA PLANILHA DOS SERVIDORES DO SISTEMA INTEGRADO (RELATÓRIO) SAI BANCO DE DADOS ATUALIZADO COM AMBIENTE E EXERCÍCIO DOS SERVIDORES ''' listdir = os.listdir('DADOS_EXTRATOR\\') if 'servidores.xlsx' in listdir: xls = 'DADOS_EXTRATOR\\servidores.xlsx' folha = 'Servidores' arq = pd.read_excel(xls, folha) dados = arq[['Siape', 'Ambiente', 'Exercício']] dados = dados[dados['Siape'].notnull()] dados['Siape'] = dados['Siape'].apply(lambda x: str(x).rjust(7, '0')) dados = dados.dropna(thresh=2) dados = dados.fillna('null') dados = dados[dados['Siape'].duplicated() == False] sql = '''delete from ts_sis_ambientes;''' sqlexecute(sql) sql = '''INSERT INTO ts_sis_ambientes\n(GR_MATRICULA, AMBIENTE, EXERCICIO)\nvalues\n''' lx = '' for i in dados.values: if len(i[0]) == 7: lx = '''( '{0}', '{1}', '{2}' ),\n'''.format(i[0], i[1], i[2]) sql += lx sql = sql[:-2] + ';' sql = sql.replace('\'null\'', 'null') sqlexecute(sql) mensagemInformacao('Importação do AMBIENTE concluída.') else: mensagemErro('Arquivo "servidores.xlsx" não encontrado. (AMBIENTE)')
def dashboardServidores(): ''' FUNÇÃO PARA CRIAR OS DASHDOARD ENTRA ENTRA NULL SAI PLANILHA COM OS DADOS PARA DASHBOARD ''' def faixa(idade): if idade > 67: fx = '68-77' elif idade > 57: fx = '58-67' elif idade > 47: fx = '48-57' elif idade > 37: fx = '38-47' elif idade > 27: fx = '28-37' else: fx = '18-27' return fx sql = '''SELECT GR_MATRICULA AS SIAPE, IT_NO_SERVIDOR AS SERVIDOR, IDADE, IT_CO_SEXO AS SEXO, DES_TITULACAO AS TITULAÇÃO, DES_ETNIA AS ETNIA, DES_REGIME_JURIDICO AS 'REG JUR', IT_CO_JORNADA_TRABALHO as 'CARGA HORÁRIA', DES_CARREIRA AS CARREIRA, DES_CARGO AS CARGO, DES_GRUPO AS GRUPO, DES_UPAG AS UPAG FROM tb_ser_rel where IT_DA_OCOR_EXCLUSAO_SERV is null and IT_DA_OCOR_INATIVIDADE_SERV is null and DES_CARREIRA in ('TÉCN', 'PROF 2º', 'PROF 3º');''' dados = sqlpandas(sql) if len(dados) > 0: dados['IDADE'] = dados['IDADE'].apply(faixa) dados['TITULAÇÃO'] = dados['TITULAÇÃO'].replace([ '10 DOUTORADO', '08 ESPECIALIZAÇÃO', '09 MESTRADO', '06 MEDIO', '04 FUNDAMENTAL I', '05 FUNDAMENTAL', '07 SUPERIOR', '07 ENSINO SUPERIOR', '10 PHD', '07 SUPERIOR-INCOMPLETO' ], [ 'DOUTORADO', 'ESPECIALIZAÇÃO', 'MESTRADO', 'ENSINO MÉDIO', 'ENSINO FUNDAMENTAL', 'ENSINO FUNDAMENTAL', 'ENSINO SUPERIOR', 'ENSINO SUPERIOR', 'DOUTORADO', 'ENSINO MÉDIO' ]) dados['TOTAL'] = 1 if len(dados) > 0: salvarPandas(dados, 'DAHSBOARD - SERVIDORES') mensagemInformacao( 'Relatório DAHSBOARD - SERVIDORES criado com sucesso.') else: mensagemErro('Relatório DAHSBOARD - SERVIDORES não foi criado.')
def relatorioerrosistema(): ''' FUNÇÃO PARA VERIFICAR DADOS FALTANTES NO BANCO DE DADOS ENTRA SQL CONCULTA DOS SERVIDORES ATIVOS SAI PLANILHA DAS INFORMAÇÕES FALTANTE ''' sql = '''select GR_MATRICULA AS 'SIAPE', IT_NU_IDEN_SERV_ORIGEM AS 'ID SERVIDOR', IT_NO_SERVIDOR AS 'SERVIDOR', IT_NO_MAE AS 'MÃE', IT_DA_NASCIMENTO AS 'DT NASCIMENTO', IDADE AS 'IDADE', IT_NU_CPF AS 'CPF', IT_NU_PIS_PASEP AS 'PIS', IT_SG_UF_UORG_EMISSAO AS 'PIS UF', IT_CO_REGISTRO_GERAL AS 'RG UF', IT_SG_ORGAO_EXPEDIDOR_IDEN AS 'RG ÓRGÃO', IT_DA_EXPEDICAO_IDEN AS 'RG DT', IT_SG_UF_IDEN AS 'RG UF', EMAIL AS 'E-MAIL', IT_CO_SEXO AS 'SEXO', DES_ESTADO_CIVIL AS 'ESTADO CIVIL', DES_ESCOLARIDADE AS 'ESCOLARIDADE', DES_TITULACAO AS 'TITULAÇÃO', DES_ETNIA AS 'ETNIA', IT_SG_GRUPO_SANGUINEO AS 'TIPO SANGUE', IT_SG_FATOR_RH AS 'FATOR RH', IT_CO_BANCO_PGTO_SERVIDOR AS 'BANCO', IT_CO_AGENCIA_BANCARIA_PGTO_SERV AS 'AGÊNCIA', IT_NU_CCOR_PGTO_SERVIDOR AS 'CONTA', IT_CO_TIPO_CONTA AS 'TIPO CONTA', IT_NO_LOGRADOURO AS 'ENDEREÇO', IT_NO_BAIRRO AS 'BAIRRO', IT_NO_MUNICIPIO AS 'CIDADE', IT_CO_CEP AS 'CEP', IT_NU_ENDERECO AS 'NÚMERO', IT_NU_COMPLEMENTO_ENDERECO AS 'COMPLEMENTO', DES_NACIONALIDADE AS 'NACIONALIDADE', DES_PAIS AS 'PAÍS', DES_REGIME_JURIDICO AS 'REG JUR', TEMPO_SERVICO AS 'TEMPO SERVIÇO', DES_CARREIRA AS 'CARREIRA', DES_CARGO AS 'CARGO', DES_CLASSE AS 'CLASSE', DES_LOTACAO AS 'LOTAÇÃO', AMBIENTE AS 'AMBIENTE', EXERCICIO AS 'EXERCÍCIO', INSTITUTO AS 'INSTITUTO', DEPARTAMENTO AS 'DEPARTAMENTO', DES_GRUPO AS 'GRUPO', DES_UPAG AS 'UPAG', IT_DA_PUBL_DIPL_INGR_SPUB AS 'DT PORTARIA NOMEAÇÃO', IT_DA_PUBL_DIPL_INGR_ORGAO AS 'DT PORTARIA', IT_DA_OCOR_INGR_ORGAO_SERV AS 'DT INGRESSO ÓRGÃO', DES_INGRESSO_SPUB AS 'DESCRIÇÃO INGRESSO SP', IT_DA_OCOR_INGR_SPUB_SERV AS 'DT INGRESSO SP', DES_INGRESSO_ORGAO AS 'DESCRIÇÃO INGRESSO ÓRGÃO', IT_DA_OCOR_INATIVIDADE_SERV AS 'DT INATIVIDADE', DES_INATIVIDADE AS 'DESCRIÇÃO INATIVIDADE', IT_DA_OCOR_EXCLUSAO_SERV AS 'DESCRIÇÃO EXCLUSÃO', DES_EXCLUSAO AS 'DT EXCLUSÃO', FLEXIBILIZADO AS 'FLEXIBILIDADO' from tb_ser_rel where IT_DA_OCOR_EXCLUSAO_SERV is null and IT_DA_OCOR_INATIVIDADE_SERV is null and des_carreira in ('TÉCN', 'TÉCN-ESP', 'PROF 2º', 'PROF 3º');''' dados = sqlpandas(sql) if len(dados): lista = dados.isna().sum() for i in lista.items(): if i[1] > 0 and i[0] not in [ 'DT EXCLUSÃO', 'DT INATIVIDADE', 'DT INGRESSO SP', 'DT PORTARIA', 'COMPLEMENTO', 'BAIRRO' ]: filtro = dados[dados[i[0]].isna()] salvarPandas(filtro, 'ERRO-DADOS FALTANDO - ' + str(i[0]), 'RELATORIOS DE ERRO\\') mensagemInformacao( 'Relatório de erro (DADOS FALTANDO) criado com sucesso.')
def addWiew(): ''' FUNÇÃO PARA CRIAR A WIEW ANO-ANO E ANO-ANO C ENTRA SQL COM A WIEW SAI WIEW CRIADA NO BANCO ''' tbsql = [] sql = '''CREATE VIEW `anoano` AS SELECT "T" AS `TRABALHANDO`, "ADM" AS `SITUACAO`, 1 AS `VALOR`, YEAR(`tb_ser_rel`.`IT_DA_OCOR_INGR_ORGAO_SERV`) AS `ANO`, MONTH(`tb_ser_rel`.`IT_DA_OCOR_INGR_ORGAO_SERV`) AS `MES`, `tb_ser_rel`.`GR_MATRICULA` AS `SIAPE` FROM `tb_ser_rel` WHERE (ISNULL(`tb_ser_rel`.`IT_DA_OCOR_INATIVIDADE_SERV`) AND ISNULL(`tb_ser_rel`.`IT_DA_OCOR_EXCLUSAO_SERV`)) UNION SELECT "NT" AS `NT`, "ADM" AS `ADM`, 1 AS `1`, YEAR(`tb_ser_rel`.`IT_DA_OCOR_INGR_ORGAO_SERV`) AS `year(IT_DA_OCOR_INGR_ORGAO_SERV)`, MONTH(`tb_ser_rel`.`IT_DA_OCOR_INGR_ORGAO_SERV`) AS `month(IT_DA_OCOR_INGR_ORGAO_SERV)`, `tb_ser_rel`.`GR_MATRICULA` AS `GR_MATRICULA` FROM `tb_ser_rel` WHERE ((`tb_ser_rel`.`IT_DA_OCOR_INATIVIDADE_SERV` IS NOT NULL) OR (`tb_ser_rel`.`IT_DA_OCOR_EXCLUSAO_SERV` IS NOT NULL)) UNION SELECT "NT" AS `NT`, "APO" AS `APO`, -(1) AS `-1`, YEAR(`tb_ser_rel`.`IT_DA_OCOR_INATIVIDADE_SERV`) AS `year(IT_DA_OCOR_INATIVIDADE_SERV)`, MONTH(`tb_ser_rel`.`IT_DA_OCOR_INATIVIDADE_SERV`) AS `month(IT_DA_OCOR_INATIVIDADE_SERV)`, `tb_ser_rel`.`GR_MATRICULA` AS `GR_MATRICULA` FROM `tb_ser_rel` WHERE (`tb_ser_rel`.`IT_DA_OCOR_INATIVIDADE_SERV` IS NOT NULL) UNION SELECT "NT" AS `NT`, "FAL" AS `FAL`, -(1) AS `-1`, YEAR(`tb_ser_rel`.`IT_DA_OCOR_EXCLUSAO_SERV`) AS `year(IT_DA_OCOR_EXCLUSAO_SERV)`, MONTH(`tb_ser_rel`.`IT_DA_OCOR_EXCLUSAO_SERV`) AS `month(IT_DA_OCOR_EXCLUSAO_SERV)`, `tb_ser_rel`.`GR_MATRICULA` AS `GR_MATRICULA` FROM `tb_ser_rel` WHERE ((`tb_ser_rel`.`IT_DA_OCOR_EXCLUSAO_SERV` IS NOT NULL) AND (`tb_ser_rel`.`DES_EXCLUSAO` LIKE 'FALECI%') AND ISNULL(`tb_ser_rel`.`IT_DA_OCOR_INATIVIDADE_SERV`)) UNION SELECT "NT" AS `NT`, "DES" AS `DES`, -(1) AS `-1`, YEAR(`tb_ser_rel`.`IT_DA_OCOR_EXCLUSAO_SERV`) AS `year(IT_DA_OCOR_EXCLUSAO_SERV)`, MONTH(`tb_ser_rel`.`IT_DA_OCOR_EXCLUSAO_SERV`) AS `month(IT_DA_OCOR_EXCLUSAO_SERV)`, `tb_ser_rel`.`GR_MATRICULA` AS `GR_MATRICULA` FROM `tb_ser_rel` WHERE ((`tb_ser_rel`.`IT_DA_OCOR_EXCLUSAO_SERV` IS NOT NULL) AND ISNULL(`tb_ser_rel`.`IT_DA_OCOR_INATIVIDADE_SERV`) AND (NOT ((`tb_ser_rel`.`DES_EXCLUSAO` LIKE 'FALECI%'))))''' tbsql.append(sql) sql = '''CREATE VIEW `anoanoc` AS SELECT `a`.`TRABALHANDO` AS `TRABALHANDO`, `a`.`SITUACAO` AS `SITUACAO`, `a`.`VALOR` AS `VALOR`, `a`.`ANO` AS `ANO`, `a`.`MES` AS `MES`, `a`.`SIAPE` AS `SIAPE`, `b`.`IT_NO_SERVIDOR` AS `SERVIDOR`, `b`.`IT_NU_CPF` AS `CPF`, `b`.`DES_ETNIA` AS `ETNIA`, `b`.`DES_NACIONALIDADE` AS `NACIONALIDADE`, `b`.`DES_REGIME_JURIDICO` AS `REG_JUR`, `b`.`DES_CARREIRA` AS `CARREIRA`, `b`.`DES_CARGO` AS `CARGO`, `b`.`DES_LOTACAO` AS `LOTACAO`, `b`.`DES_GRUPO` AS `GRUPO`, `b`.`DES_UPAG` AS `UPAG`, `b`.`IT_CO_JORNADA_TRABALHO` AS `CH`, `b`.`IT_DA_OCOR_INGR_SPUB_SERV` AS `DT_I_SP`, `b`.`IT_DA_OCOR_INGR_ORGAO_SERV` AS `DT_I_O`, `b`.`IT_DA_OCOR_INATIVIDADE_SERV` AS `DT_APO`, `b`.`IT_DA_OCOR_EXCLUSAO_SERV` AS `DT_DES` FROM (`anoano` `a` JOIN `tb_ser_rel` `b` ON ((`a`.`SIAPE` = `b`.`GR_MATRICULA`)))''' tbsql.append(sql) tbsql.append('commit;') for sql in tbsql: sqlexecute(sql) mensagemInformacao('Tabelas Wiew ANO-ANO - ANO-ANO-C criado com sucesso.')
def documentos(): ''' FUNÇÃO PARA PEGAR O ARQUIVO DO EXTRATOR DE DADOS (DOCUMENTOS) E TRANSFORMAR PARA IMPORTAÇÃO NO BANCO MYSQL ENTRA NULL (OBS: OS ARQUIVOS DO EXTRATOR (TXT) E (REF) DEVERÃO ESTAR NA PASTA DOCUMENTOS) SAI ARQUIVO (TXT) E (CSV) PARA IMPORTAÇÃO NO BANCO DE DADOS ''' # CAMPOS QUE DEVERÃO TER NA TABELA dados = sqlpandas( '''SELECT campo FROM talentoshumanos.ts_sis__config_tabelas where tabela = 'DOCUMENTOS';''') campos = list(dados['campo']) # PEGAR OS ARQUIVOS DOCUMENTOS (TXT) E (REF) layoutDOC = pegarLayout(caminhoDOC) valoresDOC = pegarValores(caminhoDOC) if len(layoutDOC) > 0: # LOOP NOS ARQUIVOS dadostodos = pd.DataFrame() for numero in range(0, len(layoutDOC)): # TRANSFORMA ARQUIVOS (TXT) EM TABELA (LIST) tb = layoutValorTabela(layoutDOC[numero], valoresDOC[numero]) # PEGAR O NOME DOS CAMPOS titulo = list(layoutDOC[numero].keys()) # TRANSFORMAR TABELA (LIST) EM DADOS (DATAFRAME) dados = tabelaToPandas(tb, titulo) # EXCLUIR O 'GR_MATRICULA' DAS TABELAS - POIS A PRIMEIRA TABELA JÁ TEM if numero > 0: dados = dados.drop(columns=['GR_MATRICULA']) # JUNTAR AS TABELAS (DATAFRAME) EM UM SÓ ARQUIVO dadostodos = pd.concat([dados, dadostodos], axis=1) # FILTRA O DATAFRAME (DATAFRAME) dadostodos = dadostodos[campos] # CORRIGE A MATRÍCULA RETIRANDO O NÚMERO DO ÓRGÃO correcao = dadostodos['GR_MATRICULA'].apply(lambda x: x[5:]) dadostodos['GR_MATRICULA'] = correcao # CORRECAO CPF correcao = dadostodos['IT_NU_CPF'].apply(lambda x: x) dadostodos['IT_NU_CPF'] = correcao def validardata(data): if len(data) == 8 and data != '00000000': return data else: return 'NULL' # PROCURA E CORRIGE AS DATAS DO DATAFRAME(DATAFRAME) {'00000000' == ''} for coluna in dadostodos.columns: if coluna.count('_DA_') > 0: values = dadostodos[coluna].apply(lambda x: validardata(x)) dadostodos[coluna] = values # SALVA O SQL DOS DADOS sqltxt = pandasInsert('tb_ser_doc', dadostodos) # SALVA O CSV DOS DADOS pandasExport('Documentos', dadostodos) mensagemInformacao('Arquivo DOCUMENTO gerado.') return sqltxt else: mensagemErro('Arquivo DOCUMENTO não encontrado.')
def ImportarServidoresCedidos(): ''' FUNÇÃO PARA IMPORTAR O SERVIDORES CEDIDOS PARA O SISTEMA (IMFORMAÇÃO PARA AGENTES PÚBLICOS) ENTRA RELATÓRIO DO SIAPE COM O SERVIDORES CEDIDOS SAI BANCO DE DADOS ATUALIZADO COM SERVIDORES CEDIDOS ''' listdir = [] for vl in os.listdir('DADOS_EXTRATOR\\'): listdir.append(str(vl).upper()) if 'CEDIDOS.TXT' in listdir: sql = 'delete from ts_sis_cedidos;' sqlexecute(sql) arq = open('DADOS_EXTRATOR\\CEDIDOS.txt', 'r') texto = arq.read() arq.close() texto = texto.split('\n') newtb = [] siapecadunico = set() for vl in range(0, len(texto)): if texto[vl].count('INICIO:') > 0: l2 = texto[vl].split() l1 = texto[vl - 1].split() siapecad = str(l1[0]).rjust(10, '0') orgao = l1[-1] data = l2[1] ano = data[5:] mes = data[2:5] dia = data[0:2] txmes = 'JAN FEV MAR ABR MAI JUN JUL AGO SET OUT NOV DEZ'.split( ) dicmes = {} contador = 1 for vl in txmes: dicmes[vl] = contador contador += 1 mes = dicmes[mes] data = '{0}-{1}-{2}'.format(ano, mes, dia) lotacao = l2[-1] if not siapecad in siapecadunico: siapecadunico.add(siapecad) newtb.append((siapecad, data, lotacao, orgao)) sql = '' for i in newtb: sql += str(i) + ',\n' sql = sql.replace('[', '(') sql = sql.replace(']', ')') sql = sql[:-1] + ';' sql = sql.replace(',;', ';') sql = '''INSERT INTO ts_sis_cedidos (SIAPECAD, DT_I, LOTACAO, ORGAO) VALUES\n''' + sql sqlexecute(sql) mensagemInformacao('Importaçaõ dos CEDIDOS-SIAPE concluída.') else: mensagemErro('Arquivo CEDIDOS.XTX não encontrado.')
def quandroServidores(): ''' FUNÇÃO PARA CRIAR O QUADRO DE SERVIDORES CSV (CSV) ENTRA NULL SAI PLANILHA QUADRO DE SERVIDORES CSV (CSV) ''' ### GERAR NOVO QS colunas = '''SIAPE ID SERVIDOR SERVIDOR MÃE DT NASCIMENTO IDADE CPF PIS PIS UF RG RG ÓRGÃO RG DT RG UF E-MAIL SEXO ESTADO CIVIL ESCOLARIDADE TITULAÇÃO ETNIA CD-BANCO CD-AGÊNCIA CD-CONTA CD-TIPO CONTA ENDEREÇO END. BAIRRO END. CIDADE END. CEP END. NÚMERO END. COMPLEMENTO CD-PAÍS ENDEREÇO CD-NACIONALIDADE CD-REGIME JURÍDICO CD-REG JUR SIT REG JUR CD-CARREIRA CD-CARGO CARREIRA CARGO CD-CLASSE CD-CLASSE REFERÊNCIA CD-CLASSE PADRÃO CLASSE CD-CLASSE NÍVEL CÓDIGO VAGA CD-LOTAÇÃO LOTAÇÃO AMBIENTE EXERCÍCIO INSTITUTO DEPARTAMENTO GRUPO UPAG CH CD-UPAG DT PORTARIA NOMEAÇÃO DT INGRESSO ÓRGÃO SP CD-INGRESSO GRUPO SP CD-INGRESSO OCORRÊNCIA SP DESC INGRESSO SP DT INGRESSO SP DT PORTARIA NOMEAÇÃO ÓRGÃO CD-INGRESSO GRUPO ÓRGÃO CD-INGRESSO OCORRÊNCIA ÓRGÃO DESC INGRESSO ÓRGÃO PORTARIA NOMEAÇÃO NÚMERO CD-INATIVIDADE GRUPO CD-INATIVIDADE OCORRÊNCIA DESC INATIVIDADE DT INATIVIDADE CD-EXCLUSÃO GRUPO CD-EXCLUSÃO OCORRÊNCIA DESC EXCLUSAO DT EXCLUSÃO CD-GRUPO DEFICIÊNCIA FÍSICA CD-DEFICIÊNCIA FÍSICA''' colunas = colunas.replace(' ', '') colunas = colunas.split('\n') sqlConsultaNova('NOVO QS 2019', colunas, 'TODOS', [], [], False) mensagemInformacao('Relatório QS - SERVIDORES criado com sucesso.')
def addTabelaBanco(): ''' FUNÇÃO PARA CRIAR AS TABELAS DOC END REL NO BANCO DE DADOS CONFORME A TABELA E OS CAMPOS DEFINIDOS ENTRA PLANILHA _MYSQLBANCO _BANCO_DOC_END_REL.xlsx SAI TABELAS CRIADA NO BANCO ''' # LÊ A PLANILHA COM OS DADOS #dados = pd.read_excel('_MYSQLBANCO\_BANCO_DOC_END_REL.xlsx') dados = sqlpandas('SELECT * FROM ts_sis__config_tabelas;') # CRIA A TABELA PARA QUARDAR OS SQL tbsql = [] # ADD O SQL DA WIEW tbsql.append('drop view anoano;') tbsql.append('drop view anoanoc;') # ADD O SQL DA TABELA DOCUMENTOS tbsql.append('drop table tb_ser_doc;') sqltxt = '' # FILTRA A TABELA DOCUMENTOS E LOOP for vl in dados[dados['tabela'] == 'DOCUMENTOS'][['campo', 'tamanho']].values: sqltxt += ' {0} {1},\n'.format(vl[0], vl[1]) sqltxt = sqltxt[1:-2] sqltxt = '''CREATE TABLE tb_ser_doc (\n''' + sqltxt + ');' tbsql.append(sqltxt) # ADD O SQL DA TABELA ENDEREÇO tbsql.append('drop table tb_ser_end;') sqltxt = '' # FILTRA A TABELA DOCUMENTOS E LOOP for vl in dados[dados['tabela'] == 'ENDERECOS'][['campo', 'tamanho']].values: sqltxt += ' {0} {1},\n'.format(vl[0], vl[1]) sqltxt = sqltxt[1:-2] sqltxt = '''CREATE TABLE tb_ser_end (\n''' + sqltxt + ');' tbsql.append(sqltxt) # ADD O SQL DA TABELA RELACIONAMENTO tbsql.append('drop table tb_ser_rel;') sqltxt = '' # FILTRA A TABELA RELACIONAMENTO for vl in dados[dados['tb_relaciona'] == 'SIM'][['campo', 'tamanho']].values: sqltxt += ' {0} {1},\n'.format(vl[0], vl[1]) sqltxt = sqltxt[1:-2] sqltxt = 'CREATE TABLE tb_ser_rel (\n' '' + sqltxt + ');' tbsql.append(sqltxt) tbsql.append('''ALTER TABLE `talentoshumanos`.`tb_ser_doc` CHANGE COLUMN `GR_MATRICULA` `GR_MATRICULA` CHAR(7) NOT NULL , ADD PRIMARY KEY (`GR_MATRICULA`);''') tbsql.append('''ALTER TABLE `talentoshumanos`.`tb_ser_end` CHANGE COLUMN `GR_MATRICULA_SERV_DISPONIVEL` `GR_MATRICULA_SERV_DISPONIVEL` CHAR(7) NOT NULL , ADD PRIMARY KEY (`GR_MATRICULA_SERV_DISPONIVEL`);''') tbsql.append('''ALTER TABLE `talentoshumanos`.`tb_ser_rel` CHANGE COLUMN `GR_MATRICULA` `GR_MATRICULA` CHAR(7) NOT NULL , ADD PRIMARY KEY (`GR_MATRICULA`);''') for vl in tbsql: sqlexecute(vl) mensagemInformacao( 'Tabelas (tb_ser_doc, tb_ser_end, tb_ser_end) criado com sucesso.')
def arquivostodosnovos(): ''' FUNÇÃO PARA AGRUPAR OS RELATÓRIOS GERADOS ENTRA NULL SAI ARQUIVOS GERADOS ''' colunas = ['SIAPE', 'SERVIDOR', 'DT NASCIMENTO', 'IDADE', 'E-MAIL', 'SEXO', 'ESTADO CIVIL', 'ESCOLARIDADE', 'TITULAÇÃO', 'ETNIA', 'NACIONALIDADE', 'NASC PAÍS', 'REG JUR', 'TEMPO SERVIÇO', 'CARREIRA', 'CARGO', 'CLASSE', 'LOTAÇÃO', 'AMBIENTE', 'EXERCÍCIO', 'GRUPO', 'UPAG', 'CH', 'DT INGRESSO ÓRGÃO SP', 'DT INATIVIDADE', 'DT EXCLUSÃO'] sqlConsultaNova('SERVIDORES - ATIVOS - (TODOS)', colunas, 'ATI', ['TÉCN', 'TÉCN-ESP', 'PROF 3º', 'PROF 2º'], []) sqlConsultaNova('SERVIDORES - ATIVOS - HC', colunas, 'ATI', ['TÉCN', 'TÉCN-ESP', 'PROF 3º', 'PROF 2º'], ['HC']) sqlConsultaNova('SERVIDORES - ATIVOS - TÉCNICOS', colunas, 'ATI', ['TÉCN', 'TÉCN-ESP'], []) sqlConsultaNova('SERVIDORES - ATIVOS - DOCENTES 2º', colunas, 'ATI', ['PROF 2º'], []) sqlConsultaNova('SERVIDORES - ATIVOS - DOCENTES 3º', colunas, 'ATI', ['PROF 3º'], []) sqlConsultaNova('SERVIDORES - (APOSENTADOS)', colunas, 'APO', ['TÉCN', 'TÉCN-ESP', 'PROF 3º', 'PROF 2º'], []) sqlConsultaNova('SERVIDORES - (DESLIGADOS)', colunas, 'DES', ['TÉCN', 'TÉCN-ESP', 'PROF 3º', 'PROF 2º'], []) ### CEFORES sqlConsultaNova('SERVIDORES - ATIVOS - (LOTAÇÃO {0}) - PROF 2º'.format('CEFORES'), colunas, 'ATI', ['PROF 2º'], ['CEFORES']) sqlConsultaNova('SERVIDORES - ATIVOS - (LOTAÇÃO {0}) - TÉCNICOS'.format('CEFORES'), colunas, 'ATI', ['TÉCN', 'TÉCN-ESP'], ['CEFORES']) ### INSTITUTOS E ITURAMA institutos = ['ICBN', 'ICENE', 'ICS', 'ICTE', 'IELAHS', 'ITURAMA'] for it in institutos: sqlConsultaNova('SERVIDORES - ATIVOS - (LOTAÇÃO {0}) - PROF 3º'.format(str(it)), colunas, 'ATI', ['PROF 3º'], [it]) for it in institutos: sqlConsultaNova('SERVIDORES - ATIVOS - (LOTAÇÃO {0}) - TÉCNICOS'.format(str(it)), colunas, 'ATI', ['TÉCN', 'TÉCN-ESP'], [it]) mensagemInformacao('Relatório dos servidores - ATIVOS E INATIVOS - criados com sucesso.')
def correcaodobanco(): ''' FUNÇÃO PARA CORRIGIR INFORMAÇÕES NO BANDO DE DADOS ENTRA ENTRA UM SQL COM A INSTRUÇÃO SAI BANCO DE DADOS ATUALIZADO ''' sql = [] # 001 DATA DA EXTRAÇÃO sql.append(''' INSERT INTO tb_dt_extracao (MATRICULA, DTEXTRACAO) select b.GR_MATRICULA, CURDATE() from tb_ser_doc as b where b.gr_matricula not in( SELECT a.MATRICULA from tb_dt_extracao as a); ''') # 002 CORRIGIR LOTAÇÃO DE STRING PARA NÚMERO sql.append( '''update tb_ser_doc set IT_CO_UORG_LOTACAO_SERVIDOR = IT_CO_UORG_LOTACAO_SERVIDOR * 1;''' ) # 003 ADD LOCAÇÃO DOS SERVIDORES ATIVO NA TABELA HISTORICO DE LOCAÇÃO DOS APOSENTADOS sql.append('''insert into ts_sis__correcao_lot_aposentado (select a.GR_MATRICULA, a.IT_CO_UORG_LOTACAO_SERVIDOR from tb_ser_rel as a where IT_DA_OCOR_INATIVIDADE_SERV is null and IT_DA_OCOR_EXCLUSAO_SERV is null and DES_CARREIRA in ('TÉCN', 'PROF 3º', 'PROF 2º'));''') # HISTORICO DO APOSENTADOS # 004 SERVIDOR APOSENTADO FICA LOTADO NO PRORH - GUARDAR A ÚLTIMA LOTAÇÃO E SALVAR EM UMA TABELA PARA FAZER ATUALIZAÇÃO sql.append(''' DELETE FROM ts_sis__correcao_lot_aposentado AS A where A.GR_MATRICULA not in( SELECT b.GR_MATRICULA FROM tb_ser_doc as b WHERE concat(b.IT_SG_REGIME_JURIDICO, b.IT_CO_SITUACAO_SERVIDOR) in ('EST02', 'EST15') AND B.IT_DA_OCOR_INATIVIDADE_SERV IS NOT NULL); ''') ### CORREÇÕES EM DOCUMENTOS - INICIO # 005 CORREÇÕES NOS CARGOS - SERVIDORES SEM CARGO - ESTAGIÁRIOS - RESIDENTES sql.append(''' update tb_ser_doc as a, ts_sis__correcao_cargo as b set a.IT_CO_GRUPO_CARGO_EMPREGO = b.IT_CO_GRUPO_CARGO_EMPREGO, a.IT_CO_CARGO_EMPREGO = b.IT_CO_CARGO_EMPREGO where a.GR_MATRICULA = b.GR_MATRICULA; ''') # 006 CORREÇÃO NA LOTAÇÃO DOS SERVIDORES APOSENTADOS sql.append(''' UPDATE tb_ser_doc AS A INNER JOIN ts_sis__correcao_lot_aposentado AS B ON A.GR_MATRICULA = B.GR_MATRICULA SET A.IT_CO_UORG_LOTACAO_SERVIDOR = B.CD_LOTACAO; ''') # 007 CORREÇÃO NA LOTAÇÃO DOS RESITENDES DO HC sql.append(''' UPDATE tb_ser_doc as a SET a.IT_CO_UORG_LOTACAO_SERVIDOR = '12' WHERE a.IT_SG_REGIME_JURIDICO='MRD' or a.IT_SG_REGIME_JURIDICO='RMP'; ''') # 008 CORREÇÃO NO CARGO DO ESTAGIÁRIOS sql.append(''' UPDATE tb_ser_doc as a SET a.IT_CO_GRUPO_CARGO_EMPREGO = "999", a.IT_CO_CARGO_EMPREGO = "997" WHERE a.IT_SG_REGIME_JURIDICO="ETG"; ''') # 009 CORREÇÃO NO CARGO DOS RESIDENTES sql.append(''' UPDATE tb_ser_doc as a SET a.IT_CO_GRUPO_CARGO_EMPREGO = "999", a.IT_CO_CARGO_EMPREGO = "999" WHERE a.IT_SG_REGIME_JURIDICO="MRD"; ''') # 010 CORREÇÃO NO CARGO DOS RESIDENTES sql.append(''' UPDATE tb_ser_doc as a SET a.IT_CO_GRUPO_CARGO_EMPREGO = "999", a.IT_CO_CARGO_EMPREGO = "998" WHERE a.IT_SG_REGIME_JURIDICO="RMP"; ''') # 011 CORREÇÃO NA LOTAÇÃO DOS SERVIDORES - COLABORAÇÃO TÉCNICA - CARGO EM COMISSÃO sql.append(''' UPDATE tb_ser_doc AS A INNER JOIN ts_sis__correcao_lot_outros AS B ON A.GR_MATRICULA = B.GR_MATRICULA SET A.IT_CO_UORG_LOTACAO_SERVIDOR = B.CD_LOTACAO; ''') # 012 CORREÇÃO NA JORNADA DE TRABALHO DO PROFESSOR DE 40 sql.append(''' UPDATE tb_ser_doc as a SET a.IT_CO_JORNADA_TRABALHO = '40 DE' WHERE a.IT_CO_JORNADA_TRABALHO='99'; ''') ### CORREÇÕES EM DOCUMENTOS - FIM ### CORRECOES RELACIONAMENTO - INÍCIO # 013 DELETAR TABELA RELACIONAMENTO sql.append('''delete from tb_ser_rel;''') ## 014 INCLUIR DADOS NA TABELA RELACIONAMENTO # CRIAR SQL INSERT TABELA TB_SER_END axsql = '''SELECT tabela, campo FROM talentoshumanos.ts_sis__config_tabelas where tb_relaciona = 'SIM' AND TABELA != 'RELACIONA';''' dados = sqlpandas(axsql) axsql = 'INSERT INTO tb_ser_rel\n' campos = '(' + str(list(dados['campo']))[1:-1] + ')\n' campos = campos.replace('\'', '`') axsql += campos ax = 'select ' dic = {'DOCUMENTOS': 'A.', 'ENDERECOS': 'B.'} for vl in dados.values: ax += '{0}{1}, '.format(dic[vl[0]], vl[1]) ax = ax[0:-2] ax += ''' from tb_ser_doc as a, tb_ser_end as b where a.gr_matricula = b.GR_MATRICULA_SERV_DISPONIVEL''' ax = '( ' + ax + ' )' axsql += ax + ';' sql.append(axsql) # 015 ATUALIZAÇÃO DA CARREIRA DO PENSIONISTA sql.append(''' UPDATE tb_ser_rel AS A SET A.DES_CARREIRA = 'PEN' WHERE concat(A.IT_SG_REGIME_JURIDICO, IT_CO_SITUACAO_SERVIDOR) = 'NES84'; ''') # 016 ATUALIZAR A CARREIRA DOS SERVIDORES sql.append('''UPDATE TB_SER_REL AS A LEFT JOIN tp_cargos AS B ON concat(A.IT_CO_GRUPO_CARGO_EMPREGO, A.IT_CO_CARGO_EMPREGO) = B.cd_cargo_emprego SET A.DES_CARREIRA = B.DESC_CARREIRA;''') # 017 ATUALIZAÇÃO DA CARREIRA DO DOCENTE - ALUIZIO ROSA PRATA - PROFESSOR QUE NÃO TEM CARGO sql.append(''' UPDATE tb_ser_rel AS A SET A.DES_CARREIRA = 'PROF 3º' WHERE concat(A.IT_SG_REGIME_JURIDICO, IT_CO_SITUACAO_SERVIDOR) = 'NES05' AND A.GR_MATRICULA = '0389972'; ''') # 018 ATUALIZAÇÃO DA CARREIRA DO SERVIDOR - IZILDINHA MARIA SILVA MUNHOZ - SAIU ANTES DE 94 sql.append(''' UPDATE tb_ser_rel AS A SET A.DES_CARREIRA = 'TÉCN' WHERE concat(A.IT_SG_REGIME_JURIDICO, IT_CO_SITUACAO_SERVIDOR)='NES05' AND A.GR_MATRICULA = '2085597'; ''') # 019 ATUALIZAÇÃO DA CARREIRA DO SERVIDOR - ANTONIO LUIZ VENEU JORDÃO - CARGO EM COMISSÃO - ESPIÃO DO BOZO sql.append(''' UPDATE tb_ser_rel AS A SET A.DES_CARREIRA = 'TÉCN-ESP' WHERE A.GR_MATRICULA = '3140616'; ''') # 020 ATUALIZAR - RESIDENTE NÃO TEM OS DADOS sql.append(''' update tb_ser_rel set DES_CLASSE = 'V.N.O. (RES)', EMAIL = 'V.N.O. (RES)', AMBIENTE = 'V.N.O. (RES)', EXERCICIO = 'V.N.O. (RES)' where DES_CARREIRA = 'RES'; ''') # 021 ATUALIZAR - ESTAGIÁRIO NÃO TEM OS DADOS sql.append(''' update tb_ser_rel set DES_CLASSE = 'V.N.O. (ETG)', EMAIL = 'V.N.O. (ETG)', AMBIENTE = 'V.N.O. (ETG)', EXERCICIO = 'V.N.O. (ETG)' where DES_CARREIRA = 'ETG'; ''') # 022 ATUALIZAR - PENSIONISTA NÃO TEM OS DADOS sql.append(''' update tb_ser_rel set DES_CLASSE = 'V.N.O. (PEN)', EMAIL = 'V.N.O. (PEN)', AMBIENTE = 'V.N.O. (PEN)', EXERCICIO = 'V.N.O. (PEN)' where DES_CARREIRA = 'PEN'; ''') # 023 ATUALIZAÇÃO DA CARREIRA DO DOCENTE - HELENICE GOBBI - CARREIRA DE PROFESSOR sql.append(''' UPDATE tb_ser_rel AS A SET A.IT_CO_GRUPO_CARGO_EMPREGO = '705' WHERE A.GR_MATRICULA = '0315630'; ''') # 024 ATUALIZAR E-MAIL INSTITUCIONAL DOS SERVIDORES sql.append(''' update tb_ser_rel as a join ts_sis_email as b on a.IT_NU_CPF = B.CPF SET a.EMAIL = b.EMAIL_INST; ''') # 025 ATUALIZAR AMBIENTE E EXERCÍCIOS DOS SERVIDORES sql.append(''' update tb_ser_rel as a join ts_sis_ambientes as b on b.GR_MATRICULA = a.GR_MATRICULA SET a.AMBIENTE = b.AMBIENTE, a.EXERCICIO = b.EXERCICIO; ''') # 026 ATUALIZAR ESTADO CIVIL DOS SERVIDORES sql.append(''' update tb_ser_rel as a join tp_estado_civil as b on a.IT_CO_ESTADO_CIVIL = B.CD_ESTADO_CIVIL SET A.DES_ESTADO_CIVIL = DESC_ESTADO_CIVIL; ''') # 027 ATUALIZAR ESCOLARIDADE DOS SERVIDORES sql.append(''' update tb_ser_rel as a join tp_escolaridade as b on a.IT_CO_NIVEL_ESCOLARIDADE = b.CD_ESCOLARIDADE set a.DES_ESCOLARIDADE = b.DESC_ESCOLARIDADE; ''') # 028 ATUALIZAR TITULAÇÃO DOS SERVIDORES sql.append(''' update tb_ser_rel as a join tp_titulacao as b on a.IT_CO_TITULACAO_FORMACAO_RH = b.CD_TITULACAO set a.DES_TITULACAO = b.DESC_TITULACAO; ''') # 029 ATUALIZAR ETNIA DOS SERVIDORES sql.append(''' update tb_ser_rel as a join tp_cores as b on a.IT_CO_COR_ORIGEM_ETNICA = b.CD_COR set a.DES_ETNIA = b.DESC_COR; ''') # 030 ATUALIZAR NACIONALIDADE DOS SERVIDORES sql.append(''' update tb_ser_rel as a join tp_nacionalidade as b on a.IT_CO_NACIONALIDADE = b.IT_CO_NACIONALIDADE set a.DES_NACIONALIDADE = b.NACIONALIDADE; ''') # 031 ATUALIZAR PAIS DOS SERVIDORES sql.append(''' update tb_ser_rel a join tp_nacionalidade b on a.IT_CO_PAIS = b.IT_CO_NACIONALIDADE set a.DES_PAIS = b.NACIONALIDADE; ''') # 032 ATUALIZAR REGIME JURÍDICO DOS SERVIDORES sql.append(''' update tb_ser_rel a join tp_reg_jur b on concat(a.IT_SG_REGIME_JURIDICO, a.IT_CO_SITUACAO_SERVIDOR)= b.CD_JURIDICO_SITUACAO set a.DES_REGIME_JURIDICO = b.DESC_JURIDICO_SITUACAO; ''') # 033 ATUALIZAR CARGO DOS SERVIDORES sql.append(''' update tb_ser_rel a join tp_cargos b on concat(a.IT_CO_GRUPO_CARGO_EMPREGO , a.IT_CO_CARGO_EMPREGO )= b.CD_CARGO_EMPREGO set a.DES_CARGO = b.DESC_CARGO_EMPREGO; ''') # 034 ATUALIZAR LOTAÇÃO DOS SERVIDORES sql.append(''' update tb_ser_rel a join tp_organograma b on a.IT_CO_UORG_LOTACAO_SERVIDOR = b.CD_LOTACAO set a.DES_LOTACAO = b.DESC_LOTACAO; ''') # 035 ATUALIZAR DESCRIÇÃO DA INGRESSO NO ÓRGÃO DOS SERVIDORES sql.append(''' update tb_ser_rel a join tp_ocorrencias b on concat(a.IT_CO_GRUPO_OCOR_INGR_ORGAO, a.IT_CO_OCOR_INGR_ORGAO)= b.CD_GRUPO_EXCLUSAO set a.DES_INGRESSO_ORGAO = b.DESC_EXCLUSAO; ''') # 036 ATUALIZAR REGIME JURÍDICO DOS SERVIDORES CONCATENANDO DOIS CAMPOS sql.append('''update tb_ser_rel SET COD_REG_JUR = concat( IT_SG_REGIME_JURIDICO, IT_CO_SITUACAO_SERVIDOR);''' ) # 037 ATUALIZAR DESCRIÇÃO DA INCLUSÃO NO SERVIÇO PÚBLICO DOS SERVIDORES sql.append(''' update tb_ser_rel a join tp_ocorrencias b on concat(a.IT_CO_GRUPO_OCOR_INGR_SPUB, a.IT_CO_OCOR_INGR_SPUB)= b.CD_GRUPO_EXCLUSAO set a.DES_INGRESSO_SPUB = b.DESC_EXCLUSAO; ''') # 038 ATUALIZAR DESCRIÇÃO DA INATIVIDADE DOS SERVIDORES sql.append(''' update tb_ser_rel a join tp_ocorrencias b on concat(a.IT_CO_GRUPO_OCOR_INATIVIDADE, a.IT_CO_OCOR_INATIVIDADE)= b.CD_GRUPO_EXCLUSAO set a.DES_INATIVIDADE = b.DESC_EXCLUSAO; ''') # 039 ATUALIZAR DESCRIÇÃO DA EXCLUSÃO DOS SERVIDORES sql.append(''' update tb_ser_rel a join tp_ocorrencias b on concat(a.IT_CO_GRUPO_OCOR_EXCLUSAO, a.IT_CO_OCOR_EXCLUSAO)= b.CD_GRUPO_EXCLUSAO set a.DES_EXCLUSAO = b.DESC_EXCLUSAO; ''') # 040 ATUALIZAR IDADE DOS SERVIDORES sql.append(''' UPDATE tb_ser_rel SET IDADE = ((YEAR(NOW()) * 12 + MONTH(NOW())) - (YEAR(IT_DA_NASCIMENTO) * 12 + MONTH(IT_DA_NASCIMENTO))) / 12; ''') # 041 ATUALIZAR TEMPO DE SERVIÇO DOS SERVIDORES sql.append(''' UPDATE tb_ser_rel SET TEMPO_SERVICO = ((YEAR(NOW()) * 12 + MONTH(NOW())) - (YEAR(IT_DA_OCOR_INGR_ORGAO_SERV) * 12 + MONTH(IT_DA_OCOR_INGR_ORGAO_SERV)))/12 where IT_DA_OCOR_INGR_ORGAO_SERV is not null; ''') # 042 ATUALIAR GRUPO E UPAG DOS SERVIDORES sql.append(''' update tb_ser_rel a join tp_organograma AS b on a.IT_CO_UORG_LOTACAO_SERVIDOR = b.CD_LOTACAO SET a.DES_GRUPO = b.GRUPO, a.DES_UPAG = b.DESC_UPG; ''') # 043 ATUALIZAR AMBIENTE E EXERCÍCIO DOS DOCENTES 3º sql.append(''' update tb_ser_rel set AMBIENTE = 'V.N.O. (PROF 3º)', EXERCICIO = 'V.N.O. (PROF 3º)' where DES_CARREIRA = 'PROF 3º'; ''') # 044 ATUALIZAR AMBIENTE E EXERCÍCIO DOS DOCENTES 2º sql.append(''' update tb_ser_rel set AMBIENTE = 'V.N.O. (PROF 2º)', EXERCICIO = 'V.N.O. (PROF 2º)' where DES_CARREIRA = 'PROF 2º'; ''') # 045 ATUALIAR AMBIENTE E EXERCÍCIOS DOS SERVIDORES DO HC sql.append(''' update tb_ser_rel set AMBIENTE = 'V.N.O. (HC)', EXERCICIO = 'V.N.O. (HC)' where DES_UPAG = 'HC'; ''') # 046 ATUALIAR TITUÇÃO DOS SERVIDORES - NÃO TEM TITULAÇÃO, REPETE ESCOLARIDADE sql.append(''' update tb_ser_rel set DES_TITULACAO = DES_ESCOLARIDADE where DES_TITULACAO is null; ''') # 047 ATUALIZAR CARREIRA DOS SERVIDORES EM SITUAÇÃO ESPECIAL - PROCURADOR E COLABORAÇÃO TÉCNICA sql.append(''' UPDATE tb_ser_rel AS A SET A.DES_CARREIRA = 'TÉCN-ESP' WHERE concat(A.IT_SG_REGIME_JURIDICO, IT_CO_SITUACAO_SERVIDOR) IN ('EST18', 'EST19', 'EST41'); ''') # 048 ATUALIAR CLASSE DOS SERVIDORES sql.append(''' update tb_ser_rel as a join tp_classes as b on b.CD_CLASSE = a.IT_CO_CLASSE set a.DES_CLASSE = b.DESC_CLASSE; ''') # 049 EXCLUIR DA TABELA - CÓDIGO 02027 - ERRO DE CADASTRAMENTO OU DUPLICIDADE sql.append(''' delete from tb_ser_rel where concat(IT_CO_GRUPO_OCOR_EXCLUSAO,IT_CO_OCOR_EXCLUSAO) = '02027'; ''') # 050 ATUALIZAR DEPARTAMENTO/INSTITUTO DOS SERVIDORES TÉCNICOS sql.append(''' update tb_ser_rel SET DEPARTAMENTO = concat('V.N.O. (', DES_CARREIRA , ')'), INSTITUTO = concat('V.N.O. (', DES_CARREIRA , ')') WHERE DES_CARREIRA <> 'PROF 3º' ''') # 051 ATUALIAR DEPARTAMENTOS DOS DOCENTES 3º sql.append(''' update tb_ser_rel as a join ts_sis_departamentos_docentes as b on a.GR_MATRICULA=b.GR_MATRICULA SET a.DEPARTAMENTO = b.DEPARTAMENTO, a.INSTITUTO = B.INSTITUTO; ''') # 052 ATUALIAR CIDADE, ESTADO, NATURALIDADE DOS SERVIDORES sql.append(''' #update tb_ser_rel as a #join ts_sis_naturalidade as b on a.it_nu_cpf = b.it_nu_cpf #set #a.DES_PAIS = b.PAIS, #a.ESTADO = b.ESTADO, #a.CIDADE = b.CIDADE; ''') # 053 CORRIGIR NO BANCO DATA DE ANIVERSÁRIO DE QUEM NASCEU EM ANO BISSEXTO - ERRO NA MENSAGEM DE ANIVERSÁRIO sql.append(''' update tb_ser_rel set IT_DA_NASCIMENTO = concat(year(IT_DA_NASCIMENTO), '-03-01') where concat( month(IT_DA_NASCIMENTO), '-', day(IT_DA_NASCIMENTO)) = '2-29'; ''') # 054 INCLUIR SIAPE NA TABELA DE SERVIDORES CEDIDOS DO MES sql.append('''update tb_ser_rel as a set a.IT_NU_IDEN_SERV_ORIGEM = lpad(a.IT_NU_IDEN_SERV_ORIGEM, 10, '0'); ''') # 055 TB IMPORTADA DO SIAPE sql.append('''UPDATE ts_sis_cedidos as a join tb_ser_rel as b on a.siapecad = b.IT_NU_IDEN_SERV_ORIGEM SET a.GR_MATRICULA = b.gr_matricula;''') # 056 INCLUIR CEDIDO NA TB REL sql.append('''UPDATE tb_ser_rel AS A JOIN ts_sis_cedidos AS B ON B.GR_MATRICULA = A.GR_MATRICULA SET A.CEDIDO_ORGAO = B.ORGAO, A.CEDIDO_DT = B.DT_I;''') # 057 COLOCAR OBSERVAÇÃO NOS PENSIONISTAS CADASTRADOS NO SIAPE sql.append('''UPDATE TB_SER_REL AS A SET A.OBS = 'PENSIONISTAS CASDASTRADOS NO SIAPE - PENSÃO JUDICIAL' WHERE A.IT_SG_REGIME_JURIDICO = 'NES' AND A.IT_CO_SITUACAO_SERVIDOR = '84';''') # 058 COLOCAR PAIS DOS SERVIDORES BRASILEIROS sql.append('''update tb_ser_rel set des_pais = 'BRASIL' where des_nacionalidade = 'BRASILEIRO';''') ### CORRECOES RELACIONAMENTO - FIM contador = 1 total = len(sql) for comando in sql: valor = round(contador * 100 / total) print(contador, valor, '%', '#' * valor) sqlexecute(comando) contador += 1 mensagemInformacao('Correção no banco concluída.')
def ServidoresComDoisCargos(): ''' FUNÇAO PARA GERAR A LISTA DE SERVIDORES COM DOIS CARGOS ENTRA NULL SAI LISTA DE SERVIDORES COM DOIS CARGOS ATIVOS ''' sql = '''SELECT GR_MATRICULA as SIAPE, IT_NO_SERVIDOR AS SERVIDOR, DES_CARREIRA AS CARREIRA, DES_CARGO AS CARGO, DES_LOTACAO AS LOTAÇÃO, DES_GRUPo AS GRUPO FROM tb_ser_rel WHERE IT_NU_CPF IN (SELECT IT_NU_CPF FROM tb_ser_rel WHERE IT_DA_OCOR_EXCLUSAO_SERV IS NULL AND IT_DA_OCOR_INATIVIDADE_SERV IS NULL AND IT_NU_CPF IN (SELECT IT_NU_CPF FROM tb_ser_rel WHERE IT_DA_OCOR_EXCLUSAO_SERV IS NULL AND IT_DA_OCOR_INATIVIDADE_SERV IS NULL AND DES_CARREIRA in ('{0}') GROUP BY 1) GROUP BY IT_NU_CPF HAVING COUNT(IT_NU_CPF) >= 2) AND IT_DA_OCOR_EXCLUSAO_SERV IS NULL AND IT_DA_OCOR_INATIVIDADE_SERV IS NULL ORDER BY 2''' cargos = ['TÉCN', 'PROF 2º', 'PROF 3º'] for cargo in cargos: sqlii = sql sqlii = sqlii.format(str(cargo)) dados = sqlpandas(sqlii) if len(dados) > 0: narquivo = ' SERVIDORES - ATIVOS - (COM 2 VÍNCULOS) - ' + cargo salvarPandas(dados, narquivo) sql = sql.format("""TÉCN', 'PROF 2º', 'PROF 3º""") dados = sqlpandas(sql) if len(dados) > 0: narquivo = ' SERVIDORES - ATIVOS - (COM 2 VÍNCULOS) - (TODOS)' salvarPandas(dados, narquivo) mensagemInformacao( 'Relatório dos Servidores com 2 vínculos criados com sucesso.') else: mensagemErro( 'Relatório dos Servidores com 2 vínculos não foi criados.')
def dashboardGestores(): ''' FUNÇÃO PARA CRIAR OS DASHDOARD ENTRA ENTRA NULL SAI PLANILHA COM OS DADOS PARA DASHBOARD ''' def faixa(idade): if idade > 67: fx = '68-77' elif idade > 57: fx = '58-67' elif idade > 47: fx = '48-57' elif idade > 37: fx = '38-47' elif idade > 27: fx = '28-37' else: fx = '18-27' return fx sql = '''SELECT A.CD_FUNCAO AS 'FUNÇÃO', B.GR_MATRICULA AS SIAPE, B.IT_NO_SERVIDOR AS SERVIDOR, B.IDADE, B.IT_CO_SEXO AS SEXO, B.DES_TITULACAO AS TITULAÇÃO, B.DES_ETNIA AS ETNIA, B.DES_REGIME_JURIDICO AS 'REG JUR', B.IT_CO_JORNADA_TRABALHO as 'CARGA HORÁRIA', B.DES_CARREIRA AS CARREIRA, B.DES_CARGO AS CARGO, B.DES_GRUPO AS GRUPO, B.DES_UPAG AS UPAG FROM ts_sis_chefias AS A JOIN tb_ser_rel AS B ON A.GR_MATRICULA = B.GR_MATRICULA''' dados = sqlpandas(sql) if len(dados) > 0: dados['IDADE'] = dados['IDADE'].apply(faixa) dados['TITULAÇÃO'] = dados['TITULAÇÃO'].replace([ '10 DOUTORADO', '08 ESPECIALIZAÇÃO', '09 MESTRADO', '06 MEDIO', '04 FUNDAMENTAL I', '05 FUNDAMENTAL', '07 SUPERIOR', '07 ENSINO SUPERIOR', '10 PHD', '07 SUPERIOR-INCOMPLETO' ], [ 'DOUTORADO', 'ESPECIALIZAÇÃO', 'MESTRADO', 'ENSINO MÉDIO', 'ENSINO FUNDAMENTAL', 'ENSINO FUNDAMENTAL', 'ENSINO SUPERIOR', 'ENSINO SUPERIOR', 'DOUTORADO', 'ENSINO MÉDIO' ]) dados['GRUPO FUNÇÃO'] = dados['FUNÇÃO'].replace([ 'FG-2', 'CD-2', 'FG-1', 'FG-3', 'FG-5', 'CD-3', 'SEM ÔNUS', 'FCC', 'FG-4', 'CD-4', 'CD-1' ], [ 'FG', 'CD', 'FG', 'FG', 'FG', 'CD', 'SEM ÔNUS', 'FCC', 'FG', 'CD', 'CD' ]) dados['TOTAL'] = 1 salvarPandas(dados, 'DAHSBOARD - GESTORES') mensagemInformacao( 'Relatório DAHSBOARD - GESTORES criado com sucesso.') else: mensagemErro('Relatório DAHSBOARD - GESTORES não foi criado.')