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 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 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 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 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 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 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 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 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 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.')