コード例 #1
0
def coletar_dados(params_exec):
    print('- Iniciando a consulta dos dados a enviar.')
    df = None
    try:
        query = model.get_consulta(params_exec, tipo_registro + '.sql')
        pgcnn = model.PostgreSQLConnection()
        df = pgcnn.exec_sql(query, index_col='id')
        print(f'- Consulta finalizada. {len(df.index)} registro(s) encontrado(s).')
    except Exception as error:
        print(f'Erro ao executar função {tipo_registro}. {error}')
    finally:
        return df
コード例 #2
0
def coletar_dados(params_exec):
    print('- Iniciando a consulta dos dados a enviar.')
    df = None
    try:
        dh_inicio = datetime.now()
        query = model.get_consulta(params_exec, f'{tipo_registro}.sql')
        pgcnn = model.PostgreSQLConnection()
        df = pgcnn.exec_sql(query, index_col='id')
        print(f'- {len(df.index)} registro(s) encontrado(s).',
              f'\n- Consulta finalizada. ({(datetime.now() - dh_inicio).total_seconds()} segundos)')
    except Exception as error:
        print(f'Erro ao executar função "enviar_assunto". {error}')
    finally:
        return df
コード例 #3
0
def coletar_dados_ipm(params_exec, nome_arquivo_sql):
    print('- Iniciando coleta de dados do processo no Database.')
    df = None
    try:
        tempo_inicio = datetime.now()
        query = model.get_consulta(params_exec, f'{nome_arquivo_sql}.sql')
        pgcnn = model.PostgreSQLConnection()
        df = pgcnn.exec_sql(query, index_col='id')
        tempo_total = (datetime.now() - tempo_inicio)
        print(
            f'- Consulta finalizada. {len(df.index)} registro(s) encontrado(s). '
            f'(Tempo consulta: {tempo_total.total_seconds()} segundos.)')

    except Exception as error:
        print(f'Erro ao executar função "coletar_dados_ipm". {error}')

    finally:
        return df
コード例 #4
0
ファイル: enviar.py プロジェクト: scoiak/bthMigracao2
def verifica_tabelas_controle():
    pgcnn = model.PostgreSQLConnection()
    pgcnn.verifica_tabelas_controle()
コード例 #5
0
def iniciar_envio(params_exec, dados, metodo, *args, **kwargs):
    print('- Iniciando envio dos dados.')
    lista_controle_migracao = []
    hoje = datetime.now().strftime("%Y-%m-%d")
    token = params_exec['token']
    total_dados = len(dados)

    for reg in dados:
        query = f'''select
                    row_number() over() as id,
                    '305' as sistema,
                    'processo-proposta-pendente' as tipo_registro,
                    *
                from (
                    select distinct
                        aux.*,
                        (regexp_replace(u.unicpfcnpj,'[/.-]|[ ]','','g')) as cpf_participante,
                        0.00 as valor_unitario,
                        i.cmiqtde as quantidade,
                        null as marca,
                        'NAO_COTOU' as situacao,
                        0 as colocacao,
                        (select id_gerado from public.controle_migracao_registro where hash_chave_dsk = md5(concat(305, 'processo', aux.clicodigo, aux.minano, aux.minnro))) as id_processo,
                        (select id_gerado from public.controle_migracao_registro where hash_chave_dsk = md5(concat(305, 'processo-participante', aux.clicodigo, aux.minano, aux.minnro, (regexp_replace(u.unicpfcnpj,'[/.-]|[ ]','','g'))))) as id_participante,
                        (select id_gerado from public.controle_migracao_registro where hash_chave_dsk = md5(concat(305, 'processo-item', aux.clicodigo, aux.minano, aux.minnro, '@', coalesce(i.lotcodigo, 0) , '@', i.cmiitem))) as id_item,
                        (select id_gerado from public.controle_migracao_registro where hash_chave_dsk = md5(concat(305, 'processo-proposta-pendente', aux.clicodigo, aux.minano, aux.minnro, (regexp_replace(u.unicpfcnpj,'[/.-]|[ ]','','g')), aux.cmiid))) as id_gerado
                    from (
                        select
                            participante.clicodigo,
                            participante.minano,
                            participante.minnro,
                            item.cmiid ,
                            participante.unicodigo
                        from (
                            select pl.clicodigo, pl.minano, pl.minnro, pl.unicodigo
                            from wco.tbparlic pl
                            where pl.clicodigo = {reg['clicodigo']}
                            and pl.minano = {reg['minano']}
                            and pl.minnro = {reg['minnro']}
                        ) participante
                        cross join (
                            select it.clicodigo, it.minano, it.minnro, it.cmiid
                            from wco.tbitemin it
                            where it.clicodigo = {reg['clicodigo']}
                            and it.minano = {reg['minano']}
                            and it.minnro = {reg['minnro']}
                        ) item
                    ) aux
                    left join wco.tbitemin i on (i.clicodigo = aux.clicodigo and i.minano = aux.minano and i.minnro = aux.minnro and i.cmiid = aux.cmiid)
                    inner join wun.tbunico u on (u.unicodigo = aux.unicodigo)
                    where not exists (
                        select 1
                        from wco.tbcadqcp qcp
                        where qcp.clicodigo = aux.clicodigo
                        and qcp.minano = aux.minano
                        and qcp.minnro = aux.minnro
                        and qcp.unicodigo = aux.unicodigo
                        and qcp.cmiid = aux.cmiid
                    )
                    and exists (
                        select 1
                        from wco.tbcadqcp qcp
                        where qcp.clicodigo = aux.clicodigo
                        and qcp.minano = aux.minano
                        and qcp.minnro = aux.minnro
                    )
                ) tab
                where id_gerado is null
                and id_processo is not null
                and id_participante is not null
                and id_item is not null
                order by 1, 2 desc, 3 desc, 4 asc'''
        pgcnn = model.PostgreSQLConnection()
        df = pgcnn.exec_sql(query, index_col='id')
        lista_dados = [i for i in df.to_dict('records')]
        total_erros = 0
        contador = 0
        total_dados = len(lista_dados)
        if total_dados > 0:
            print(
                f'- Enviando propostas pendentes do processo {reg["minnro"]}/{reg["minano"]} ({reg["clicodigo"]})'
            )
        for item in lista_dados:
            lista_dados_enviar = []
            lista_controle_migracao = []
            contador += 1
            print(f'\r- Enviando registros: {contador}/{total_dados}',
                  '\n' if contador == total_dados else '',
                  end='')
            hash_chaves = model.gerar_hash_chaves(
                sistema, tipo_registro, item['clicodigo'], item['minano'],
                item['minnro'], item['cpf_participante'], item['cmiid'])
            url_parametrizada = url.replace('{exercicio}', str(item['minano'])) \
                .replace('{processoAdministrativoId}', str(item['id_processo']))
            dict_dados = {
                'idIntegracao': hash_chaves,
                'url': url_parametrizada,
                'processoAdministrativo': {
                    'id': item['id_processo']
                },
                'participante': {
                    'id': item['id_participante']
                },
                'item': {
                    'id': item['id_item']
                },
                'situacao': {
                    'valor': item['situacao']
                },
                'quantidade': item['quantidade'],
                'valorUnitarioPercentual': item['valor_unitario']
            }

            if item['marca'] is not None:
                dict_dados.update({'marca': item['marca']})

            # print(f'Dados gerados ({contador}): ', dict_dados)
            lista_dados_enviar.append(dict_dados)
            lista_controle_migracao.append({
                'sistema':
                sistema,
                'tipo_registro':
                tipo_registro,
                'hash_chave_dsk':
                hash_chaves,
                'descricao_tipo_registro':
                'Cadastro de Propostas Pendentes do Processo',
                'id_gerado':
                None,
                'json':
                json.dumps(dict_dados),
                'i_chave_dsk1':
                item['clicodigo'],
                'i_chave_dsk2':
                item['minano'],
                'i_chave_dsk3':
                item['minnro'],
                'i_chave_dsk4':
                item['cpf_participante'],
                'i_chave_dsk5':
                item['cmiid']
            })

            if True:
                model.insere_tabela_controle_migracao_registro(
                    params_exec, lista_req=lista_controle_migracao)
                req_res = interacao_cloud \
                    .preparar_requisicao_sem_lote(
                        lista_dados=lista_dados_enviar,
                        token=token,
                        url=url,
                        tipo_registro=tipo_registro)
                model.atualiza_tabelas_controle_envio_sem_lote(
                    params_exec, req_res, tipo_registro=tipo_registro)
                if req_res[0]['mensagem'] is not None:
                    total_erros += 1
        if total_dados > 0:
            if total_erros > 0:
                print(
                    f'- Envio finalizado. Foram encontrados um total de {total_erros} inconsistência(s) de envio.'
                )
            else:
                print('- Envio de dados finalizado sem inconsistências.')