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 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 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 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 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 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 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 sqlConsultaNova(narquivo, colunas, tipo, carreira, grupo, renomear=True): ''' FUNÇÃO MODELO PARA CONSULTAR A TABELA TB_SER_REL CRIAR CONSULTA SQL E SALVAR ARQUIVO NA PASTA DE RELATÓRIOS - PADRÃO PARA GERAR SQL DE CONSULTA DO SISTEMA DE RELATÓRIO ENTRA NOME DA CONSULTA PARA SALVAR O ARQUIVO GERADO CAMPOS, PARAMETROS ([ATIVOS, APOSENTADOS, DESLIGADOS, TODOS], [TÉCN, TÉCN-ESP, PROF 3º, PROF 2º, OUTROS])PARA CONSULTA SQL SAI TABELA EM CSV DA CONSULTA REALIZADA ''' # PEGAR OS NOMES DOS CAMPOS NA TABELA TS_SIS__CONFIG_TABELAS sql = '''SELECT CAMPO, AS_NOME FROM talentoshumanos.ts_sis__config_tabelas;''' dados = sqlpandas(sql) oldcampo = list(dados['CAMPO']) newcampo = list(dados['AS_NOME']) #MONTAR DICIONÁRIO COM OS CAMPOS DA TABELA (MAIS OS NOMES PARA EXIBIÇÃO) diccampos = {} for n, v in enumerate(newcampo): if str(v).strip() != '-': diccampos[str(v).strip()] = str(oldcampo[n]).strip() titulo = colunas #MONTAR SQL PARA CONSULTA sql = '''select {0} from tb_ser_rel''' if renomear == False: #SQL SEM RENOMEAR OS CAMPOS ax = [] for coluna in colunas: ax.append(diccampos[coluna]) titulo = ax else: #SQL RENOMEANDO OS CAMPOS ax = [] for coluna in colunas: ax.append(diccampos[coluna] + ' AS \'' + coluna + '\'') axtx = ', '.join(ax) sql = sql.format(axtx) #FILTRO NA ATIVIDADE where = '''''' if tipo == 'ATI': where = '''\nwhere IT_DA_OCOR_INGR_ORGAO_SERV is not null and IT_DA_OCOR_INATIVIDADE_SERV is null and IT_DA_OCOR_EXCLUSAO_SERV is null''' elif tipo == 'APO': where = '''\nwhere IT_DA_OCOR_INGR_ORGAO_SERV is not null and IT_DA_OCOR_INATIVIDADE_SERV is not null and IT_DA_OCOR_EXCLUSAO_SERV is null''' elif tipo == 'DES': where = '''\nwhere IT_DA_OCOR_INGR_ORGAO_SERV is not null and IT_DA_OCOR_EXCLUSAO_SERV is not null''' elif tipo == 'TODOS': where = '''\nwhere IT_DA_OCOR_INGR_ORGAO_SERV is not null''' sql = sql + where #FILTRO NA CARREIRA if len(carreira) != 0: wherecarreira = '' axcarreira = '' if len(carreira) > 1: axcarreira = '\', \''.join(carreira) axcarreira = '\'' + axcarreira + '\'' else: axcarreira = '\'' + carreira[0] + '\'' wherecarreira = '''\nand DES_CARREIRA in ({0})'''.format(axcarreira) sql = sql + wherecarreira #FILTRO NO GRUPO if len(grupo) > 0: axgrupo = '\', \''.join(grupo) axgrupo = '\'' + axgrupo + '\'' sqlgrupo = '''\nand DES_GRUPO in ({0})'''.format(axgrupo) sql = sql + sqlgrupo #SALVAR TABELA GERADA dados = sqlpandas(sql) if len(dados) > 0: salvarPandas(dados, narquivo)
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 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.')
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 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 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.')