def constroi_tabela_balanco(balanco,inicioData,fimData,mes_ano): balanço = [] for blc in balanco: balanço.append(blc) tabela = { 'DATA': [], 'TOTAL CONTRATOS': [], 'CARGA': [], 'SOBRA (MWh)': [], 'SOBRA (%)': [], } if mes_ano == 'Mensal': for x in range(len(balanço) -1,-1,-1): data = date(int(balanço[x]['data'].split('-')[2]),int(balanço[x]['data'].split('-')[1]),int(balanço[x]['data'].split('-')[0])) inicio = date(int(inicioData.split('-')[0]),int(inicioData.split('-')[1]),int(inicioData.split('-')[2])) fim = date(int(fimData.split('-')[0]),int(fimData.split('-')[1]),int(fimData.split('-')[2])) if inicio <= data <= fim: continue else: balanço.pop(x) for blc in balanço: tabela['DATA'].append(blc['data']) tabela['TOTAL CONTRATOS'].append(blc['total_mwh']) tabela['CARGA'].append(blc['carga']) tabela['SOBRA (MWh)'].append( round(blc['total_mwh'] - blc['carga'], 2)) tabela['SOBRA (%)'].append( round(((blc['total_mwh'] - blc['carga']) / blc['carga']) * 100, 2) ) tabela['SOBRA (%)'] = list(map(lambda x: str(x) + '%',tabela['SOBRA (%)'])) return tabela else: anos = [] for blc in balanço: anos.append(blc['data']) anos = funcoes.remove_repetidos(map(funcoes.separa_anos,anos)) mwh = 0 carga = 0 for ano in anos: for blc in balanco: ano_balanco = blc['data'].split('-')[2] if ano_balanco == ano: mwh = mwh + blc['total_mwh'] carga = carga + blc['carga'] tabela['DATA'].append(ano) tabela['TOTAL CONTRATOS'].append(round(mwh,2)) tabela['CARGA'].append(round(carga,2)) tabela['SOBRA (MWh)'].append( round(mwh - carga, 2)) tabela['SOBRA (%)'].append( round(((mwh - carga) / carga) * 100, 2) ) tabela['SOBRA (%)'] = list(map(lambda x: str(x) + '%',tabela['SOBRA (%)'])) return tabela
def reuni_filtros(contrato): filtros = { 'TIPO DE CONTRATO': [], 'SUBMERCADO': [], 'TIPO DE LEILÃO': [], 'STATUS': [], 'PRODUTO': [], 'VENDEDOR': [], 'INÍCIO DE SUPRIMENTO': [], 'FIM DE SUPRIMENTO': [] } for chave in filtros.keys(): for cntkey in contrato.keys(): filtros[chave].append(contrato[cntkey][chave]) filtros[chave] = funcoes.remove_repetidos(filtros[chave]) filtros[chave].sort() return filtros
def gera_grafico_cts(contrato, valorContrato, filtros, inicioData, fimData, mes_ano, uni_tot, default): global fig, fig1 datas = [] valores = { 0: { "Submercado": "Nordeste", "cor": "#118dff", "valores": [] }, 1: { "Submercado": "Norte", "cor": "#12239e", "valores": [] }, 2: { "Submercado": "Sudeste", "cor": "#e66c37", "valores": [] }, 3: { "Submercado": "Sul", "cor": "#6b007b", "valores": [] }, 4: { "Submercado": "Nordeste-Projetado", "cor": "#41a4ff", "valores": [] }, 5: { "Submercado": "Norte-Projetado", "cor": "#414fb1", "valores": [] }, 6: { "Submercado": "Sudeste-Projetado", "cor": "#eb895f", "valores": [] }, 7: { "Submercado": "Sul-Projetado", "cor": "#893395", "valores": [] }, 8: { "Submercado": "Total", "cor": "#118dff", "valores": [] }, } for chave in valorContrato.keys(): datas.append(chave[-10:]) datas = funcoes.remove_repetidos(datas) datas.sort(key=lambda l: l.split('-')[2] + '-' + l.split('-')[1] + '-' + l. split('-')[0]) if mes_ano == 'Anual': v = '' else: for x in range(len(datas) - 1, -1, -1): data = date(int(datas[x].split('-')[2]), int(datas[x].split('-')[1]), int(datas[x].split('-')[0])) inicio = date(int(inicioData.split('-')[0]), int(inicioData.split('-')[1]), int(inicioData.split('-')[2])) fim = date(int(fimData.split('-')[0]), int(fimData.split('-')[1]), int(fimData.split('-')[2])) if inicio <= data <= fim: continue else: datas.pop(x) valoresContrato = {} for chave in valorContrato.keys(): valoresContrato.update({chave: valorContrato[chave]}) contratos = {} for chave in contrato.keys(): contratos.update({chave: contrato[chave]}) for x in range(len(contratos.keys()) - 1, -1, -1): idContrato = list(contratos.keys())[x] if filtros['TIPO DE CONTRATO']: if contratos[idContrato]['TIPO DE CONTRATO'] in filtros[ 'TIPO DE CONTRATO']: del contratos[idContrato] if filtros['SUBMERCADO']: if x < len(contratos) and idContrato in contratos.keys(): if contratos[idContrato]['SUBMERCADO'] in filtros[ 'SUBMERCADO']: del contratos[idContrato] if filtros['TIPO DE LEILÃO']: if x < len(contratos) and idContrato in contratos.keys(): if contratos[idContrato]['TIPO DE LEILÃO'] in filtros[ 'TIPO DE LEILÃO']: del contratos[idContrato] if filtros['STATUS']: if x < len(contratos) and idContrato in contratos.keys(): if contratos[idContrato]['STATUS'] in filtros['STATUS']: del contratos[idContrato] if filtros['PRODUTO']: if x < len(contratos) and idContrato in contratos.keys(): if contratos[idContrato]['PRODUTO'] in filtros['PRODUTO']: del contratos[idContrato] if filtros['VENDEDOR']: if x < len(contratos) and idContrato in contratos.keys(): if contratos[idContrato]['VENDEDOR'] in filtros['VENDEDOR']: del contratos[idContrato] if filtros['INÍCIO DE SUPRIMENTO']: if x < len(contratos) and idContrato in contratos.keys(): if contratos[idContrato]['INÍCIO DE SUPRIMENTO'] in filtros[ 'INÍCIO DE SUPRIMENTO']: del contratos[idContrato] if filtros['FIM DE SUPRIMENTO']: if x < len(contratos) and idContrato in contratos.keys(): if contratos[idContrato]['FIM DE SUPRIMENTO'] in filtros[ 'FIM DE SUPRIMENTO']: del contratos[idContrato] totalValorReais = 0 totalNordesteReais = 0 totalNorteReais = 0 totalSudesteReais = 0 totalSulReais = 0 totalValorMWh = 0 totalNordesteMWh = 0 totalNorteMWh = 0 totalSudesteMWh = 0 totalSulMWh = 0 keys = valoresContrato.keys() for x in range(len(datas)): if mes_ano == 'Mensal': totalValorReais = 0 totalNordesteReais = 0 totalNorteReais = 0 totalSudesteReais = 0 totalSulReais = 0 totalValorMWh = 0 totalNordesteMWh = 0 totalNorteMWh = 0 totalSudesteMWh = 0 totalSulMWh = 0 for cntKey in contratos.keys(): idValorContrato = str(cntKey + '-' + datas[x]) if mes_ano == 'Mensal': if idValorContrato in keys: if uni_tot == 'Unitário': totalValorMWh += valoresContrato[idValorContrato][ 'mwh'] totalValorReais += valoresContrato[idValorContrato][ 'custo_total'] elif uni_tot == 'Total': totalValorReais += valoresContrato[idValorContrato][ 'custo_total'] else: break if contratos[cntKey]['SUBMERCADO'] == 'NORDESTE': if uni_tot == 'Unitário': totalNordesteMWh += valoresContrato[ idValorContrato]['mwh'] totalNordesteReais += valoresContrato[ idValorContrato]['custo_total'] elif uni_tot == 'Total': totalNordesteReais += valoresContrato[ idValorContrato]['custo_total'] else: break if contratos[cntKey]['SUBMERCADO'] == 'NORTE': if uni_tot == 'Unitário': totalNorteMWh += valoresContrato[idValorContrato][ 'mwh'] totalNorteReais += valoresContrato[ idValorContrato]['custo_total'] elif uni_tot == 'Total': totalNorteReais += valoresContrato[ idValorContrato]['custo_total'] else: break if contratos[cntKey]['SUBMERCADO'] == 'SUDESTE': if uni_tot == 'Unitário': totalSudesteMWh += valoresContrato[ idValorContrato]['mwh'] totalSudesteReais += valoresContrato[ idValorContrato]['custo_total'] elif uni_tot == 'Total': totalSudesteReais += valoresContrato[ idValorContrato]['custo_total'] else: break if contratos[cntKey]['SUBMERCADO'] == 'SUL': if uni_tot == 'Unitário': totalSulMWh += valoresContrato[idValorContrato][ 'mwh'] totalSulReais += valoresContrato[idValorContrato][ 'custo_total'] elif uni_tot == 'Total': totalSulReais += valoresContrato[idValorContrato][ 'custo_total'] else: break else: continue else: AnoDaVez = datas[x].split('-')[2] if idValorContrato in keys: if uni_tot == 'Unitário' and idValorContrato[ -4:] == AnoDaVez: totalValorMWh += valoresContrato[idValorContrato][ 'mwh'] totalValorReais += valoresContrato[idValorContrato][ 'custo_total'] elif uni_tot == 'Total' and idValorContrato[ -4:] == AnoDaVez: totalValorReais += valoresContrato[idValorContrato][ 'custo_total'] else: break if contratos[cntKey]['SUBMERCADO'] == 'NORDESTE': if uni_tot == 'Unitário' and idValorContrato[ -4:] == AnoDaVez: totalNordesteMWh += valoresContrato[ idValorContrato]['mwh'] totalNordesteReais += valoresContrato[ idValorContrato]['custo_total'] elif uni_tot == 'Total' and idValorContrato[ -4:] == AnoDaVez: totalNordesteReais += valoresContrato[ idValorContrato]['custo_total'] else: break if contratos[cntKey]['SUBMERCADO'] == 'NORTE': if uni_tot == 'Unitário' and idValorContrato[ -4:] == AnoDaVez: totalNorteMWh += valoresContrato[idValorContrato][ 'mwh'] totalNorteReais += valoresContrato[ idValorContrato]['custo_total'] elif uni_tot == 'Total' and idValorContrato[ -4:] == AnoDaVez: totalNorteReais += valoresContrato[ idValorContrato]['custo_total'] else: break if contratos[cntKey]['SUBMERCADO'] == 'SUDESTE': if uni_tot == 'Unitário' and idValorContrato[ -4:] == AnoDaVez: totalSudesteMWh += valoresContrato[ idValorContrato]['mwh'] totalSudesteReais += valoresContrato[ idValorContrato]['custo_total'] elif uni_tot == 'Total' and idValorContrato[ -4:] == AnoDaVez: totalSudesteReais += valoresContrato[ idValorContrato]['custo_total'] else: break if contratos[cntKey]['SUBMERCADO'] == 'SUL': if uni_tot == 'Unitário' and idValorContrato[ -4:] == AnoDaVez: totalSulMWh += valoresContrato[idValorContrato][ 'mwh'] totalSulReais += valoresContrato[idValorContrato][ 'custo_total'] elif uni_tot == 'Total' and idValorContrato[ -4:] == AnoDaVez: totalSulReais += valoresContrato[idValorContrato][ 'custo_total'] else: break else: continue if mes_ano == 'Mensal': if uni_tot == 'Unitário': if totalValorMWh != 0: totalValorReais /= totalValorMWh if totalNordesteMWh != 0: totalNordesteReais /= totalNordesteMWh if totalNorteMWh != 0: totalNorteReais /= totalNorteMWh if totalSudesteMWh != 0: totalSudesteReais /= totalSudesteMWh if totalSulMWh != 0: totalSulReais /= totalSulMWh valores[0]["valores"].append(totalNordesteReais) valores[1]["valores"].append(totalNorteReais) valores[2]["valores"].append(totalSudesteReais) valores[3]["valores"].append(totalSulReais) valores[8]["valores"].append(totalValorReais) else: if datas[x][:5] == '01-12': if uni_tot == 'Unitário': if totalValorMWh != 0: totalValorReais /= totalValorMWh if totalNordesteMWh != 0: totalNordesteReais /= totalNordesteMWh if totalNorteMWh != 0: totalNorteReais /= totalNorteMWh if totalSudesteMWh != 0: totalSudesteReais /= totalSudesteMWh if totalSulMWh != 0: totalSulReais /= totalSulMWh valores[0]["valores"].append(totalNordesteReais) valores[1]["valores"].append(totalNorteReais) valores[2]["valores"].append(totalSudesteReais) valores[3]["valores"].append(totalSulReais) valores[8]["valores"].append(totalValorReais) totalValorReais = 0 totalNordesteReais = 0 totalNorteReais = 0 totalSudesteReais = 0 totalSulReais = 0 totalValorMWh = 0 totalNordesteMWh = 0 totalNorteMWh = 0 totalSudesteMWh = 0 totalSulMWh = 0 if mes_ano == 'Mensal': datas = list(map(funcoes.transforma_data, datas)) else: datas = funcoes.remove_repetidos(map(funcoes.separa_anos, datas)) if default: fig = go.Figure() fig1 = go.Figure() for i in range(4): fig.add_trace( go.Bar(x=datas, y=valores[i]["valores"], name=valores[i]["Submercado"], marker_color=valores[i]["cor"])) fig1.add_trace( go.Bar(x=datas, y=valores[8]["valores"], name=valores[8]["Submercado"], marker_color=valores[8]["cor"])) else: for i in range(4): fig.update_traces(x=datas, y=valores[i]["valores"], selector=dict(name=valores[i]["Submercado"])) fig1.update_traces(x=datas, y=valores[8]["valores"], selector=dict(name=valores[8]["Submercado"])) if uni_tot == 'Unitário': fig.update_layout(yaxis=dict(title='R$/MWh')) fig1.update_layout(yaxis=dict(title='R$/MWh')) else: fig.update_layout(yaxis=dict(title='R$')) fig1.update_layout(yaxis=dict(title='R$')) fig.update_layout( margin=dict(l=0, r=0, t=50, b=0), template=template[1], xaxis=dict( title='Data', titlefont_size=16, tickfont_size=14, ), yaxis=dict( titlefont_size=16, tickfont_size=14, ), legend=dict(x=0, y=1.12, bgcolor='rgba(255, 255, 255, 0)', bordercolor='rgba(255, 255, 255, 0)', orientation="h", tracegroupgap=100), barmode='group', bargap=0.15, # gap between bars of adjacent location coordinates. bargroupgap=0.1 # gap between bars of the same location coordinate. ) fig1.update_layout( margin=dict(l=0, r=0, t=50, b=0), template=template[1], xaxis=dict( title='Data', titlefont_size=16, tickfont_size=14, ), yaxis=dict( titlefont_size=16, tickfont_size=14, ), legend=dict(x=0, y=1.12, bgcolor='rgba(255, 255, 255, 0)', bordercolor='rgba(255, 255, 255, 0)', orientation="h", tracegroupgap=100), bargap=0.15, # gap between bars of adjacent location coordinates. bargroupgap=0.1 # gap between bars of the same location coordinate. )
def gera_grafico_balanco(balanco, inicioData, fimData, mes_ano, default): global fig datas = [] valores = { 0: { "Legenda": "Total Contratos", "cor": "#118dff", "valores": [] }, 1: { "Legenda": "Carga", "cor": "#12239e", "valores": [] }, 2: { "Legenda": "Sobra (MWh)", "cor": "#e66c37", "valores": [] }, } for blc in balanco: datas.append(blc['data']) if mes_ano == 'Anual': datas = funcoes.remove_repetidos(map(funcoes.separa_anos, datas)) else: for x in range(len(datas) - 1, -1, -1): data = date(int(datas[x].split('-')[2]), int(datas[x].split('-')[1]), int(datas[x].split('-')[0])) inicio = date(int(inicioData.split('-')[0]), int(inicioData.split('-')[1]), int(inicioData.split('-')[2])) fim = date(int(fimData.split('-')[0]), int(fimData.split('-')[1]), int(fimData.split('-')[2])) if inicio <= data <= fim: continue else: datas.pop(x) balanço = [] for blc in balanco: balanço.append(blc) for x in range(len(datas)): totalContratos = 0 carga = 0 sobra = 0 for blc in balanço: if mes_ano == 'Anual': if blc['data'].split('-')[2] == datas[x]: totalContratos = totalContratos + blc['total_mwh'] carga = carga + blc['carga'] else: if blc['data'] == datas[x]: totalContratos = blc['total_mwh'] carga = blc['carga'] sobra = totalContratos - carga valores[0]["valores"].append(totalContratos) valores[1]["valores"].append(carga) valores[2]["valores"].append(sobra) if mes_ano == 'Mensal': datas = list(map(funcoes.transforma_data, datas)) if default: fig = go.Figure() for i in range(3): fig.add_trace( go.Bar(x=datas, y=valores[i]["valores"], name=valores[i]["Legenda"], marker_color=valores[i]["cor"])) else: for i in range(3): fig.update_traces(x=datas, y=valores[i]["valores"], selector=dict(name=valores[i]["Legenda"])) fig.update_layout(yaxis=dict(title='MWh')) fig.update_layout( margin=dict(l=0, r=0, t=50, b=0), template=template[1], xaxis=dict( title='Data', titlefont_size=16, tickfont_size=14, ), yaxis=dict( titlefont_size=16, tickfont_size=14, ), legend=dict(x=0, y=1.12, bgcolor='rgba(255, 255, 255, 0)', bordercolor='rgba(255, 255, 255, 0)', orientation="h", tracegroupgap=100), barmode='group', bargap=0.15, # gap between bars of adjacent location coordinates. bargroupgap=0.1 # gap between bars of the same location coordinate. )
def controiTabelaIpca(ipca, inicioData, fimData, mes_ano): ipcas = [] for i in ipca: ipcas.append(i) if mes_ano == 'Mensal': tabela = { 'Data': [], 'IPCA': [], 'Variação Mensal': [], } for x in range(len(ipcas) - 1, -1, -1): data = date(int(ipcas[x]['data'].split('-')[2]), int(ipcas[x]['data'].split('-')[1]), int(ipcas[x]['data'].split('-')[0])) inicio = date(int(inicioData.split('-')[0]), int(inicioData.split('-')[1]), int(inicioData.split('-')[2])) fim = date(int(fimData.split('-')[0]), int(fimData.split('-')[1]), int(fimData.split('-')[2])) if inicio <= data <= fim: continue else: ipcas.pop(x) for i in ipcas: tabela['Data'].append(i['data']) tabela['IPCA'].append(i['ipca']) tabela['Variação Mensal'].append(i['variacao ipca']) return tabela else: tabela = { 'Data': [], 'IPCA': [], 'Variação Anual': [], } datas = [] for i in ipca: datas.append(i['data']) datas = funcoes.remove_repetidos(map(funcoes.separa_anos, datas)) n = 0 var = 0 for i in ipcas: if '01-12' in i['data']: if i['data'] == '01-12-2019': tabela['IPCA'].append(i['ipca']) tabela['Variação Anual'].append('4,31%') n = i['ipca'] else: var = ((i['ipca'] / n) - 1) * 100 n = i['ipca'] tabela['IPCA'].append(n) tabela['Variação Anual'].append( str(round(var, 3)).replace('.', ',') + '%') tabela['Data'] = datas return tabela
def gera_grafico_ipca(ipca, inicioData, fimData, mes_ano): template = [ "plotly", "plotly_white", "plotly_dark", "ggplot2", "seaborn", "simple_white", "none" ] ipcas = [] for i in ipca: ipcas.append(i) if mes_ano == 'Mensal': for x in range(len(ipcas) - 1, -1, -1): data = date(int(ipcas[x]['data'].split('-')[2]), int(ipcas[x]['data'].split('-')[1]), int(ipcas[x]['data'].split('-')[0])) inicio = date(int(inicioData.split('-')[0]), int(inicioData.split('-')[1]), int(inicioData.split('-')[2])) fim = date(int(fimData.split('-')[0]), int(fimData.split('-')[1]), int(fimData.split('-')[2])) if inicio <= data <= fim: continue else: ipcas.pop(x) valores = {"cor": "#118dff", "datas": [], "valores": []} for i in ipcas: valores['datas'].append(i['data']) valores['valores'].append(i['ipca']) valores['datas'] = list(map(funcoes.transforma_data, valores['datas'])) else: datas = [] for i in ipca: datas.append(i['data']) datas = funcoes.remove_repetidos(map(funcoes.separa_anos, datas)) valores = {"cor": "#118dff", "datas": [], "valores": []} for i in ipcas: if '01-12' in i['data']: valores['valores'].append(i['ipca']) valores['datas'] = datas fig = go.Figure() fig.add_trace( go.Bar(x=valores['datas'], y=valores['valores'], marker_color=valores["cor"])) fig.update_layout( margin=dict(l=0, r=0, t=50, b=0), template=template[1], xaxis=dict( title='Data', titlefont_size=16, tickfont_size=14, ), yaxis=dict( titlefont_size=16, tickfont_size=14, ), barmode='group', bargap=0.05, # gap between bars of adjacent location coordinates. bargroupgap=0.1 # gap between bars of the same location coordinate. ) return fig
def constroi_tabela_cnt(contrato,valorContrato,filtros,inicioData,fimData,mes_ano,det_res,mwh_mwm): if det_res == 'Detalhado': datas = [] for chave in valorContrato.keys(): datas.append(chave[-10:]) datas = funcoes.remove_repetidos(datas) datas.sort(key=lambda l: l.split('-')[2] + '-' + l.split('-')[1] + '-' + l.split('-')[0]) contratos = {} for chave in contrato.keys(): contratos.update({chave: contrato[chave]}) for x in range(len(contratos.keys()) -1,-1,-1): idContrato = list(contratos.keys())[x] if filtros['TIPO DE CONTRATO']: if contratos[idContrato]['TIPO DE CONTRATO'] in filtros['TIPO DE CONTRATO']: del contratos[idContrato] if filtros['SUBMERCADO']: if x < len(contratos) and idContrato in contratos.keys(): if contratos[idContrato]['SUBMERCADO'] in filtros['SUBMERCADO']: del contratos[idContrato] if filtros['TIPO DE LEILÃO']: if x < len(contratos) and idContrato in contratos.keys(): if contratos[idContrato]['TIPO DE LEILÃO'] in filtros['TIPO DE LEILÃO']: del contratos[idContrato] if filtros['STATUS']: if x < len(contratos) and idContrato in contratos.keys(): if contratos[idContrato]['STATUS'] in filtros['STATUS']: del contratos[idContrato] if filtros['PRODUTO']: if x < len(contratos) and idContrato in contratos.keys(): if contratos[idContrato]['PRODUTO'] in filtros['PRODUTO']: del contratos[idContrato] if filtros['VENDEDOR']: if x < len(contratos) and idContrato in contratos.keys(): if contratos[idContrato]['VENDEDOR'] in filtros['VENDEDOR']: del contratos[idContrato] if filtros['INÍCIO DE SUPRIMENTO']: if x < len(contratos) and idContrato in contratos.keys(): if contratos[idContrato]['INÍCIO DE SUPRIMENTO'] in filtros['INÍCIO DE SUPRIMENTO']: del contratos[idContrato] if filtros['FIM DE SUPRIMENTO']: if x < len(contratos) and idContrato in contratos.keys(): if contratos[idContrato]['FIM DE SUPRIMENTO'] in filtros['FIM DE SUPRIMENTO']: del contratos[idContrato] tabela = { 'ID': [], 'TIPO DE CONTRATO': [], 'CÓDIGO': [], 'INÍCIO DE SUPRIMENTO': [], 'FIM DE SUPRIMENTO': [], 'STATUS': [], 'VENDEDOR': [], 'EMPREENDIMENTO': [], 'SUBMERCADO': [], 'TIPO DE LEILÃO': [], 'PRODUTO': [], 'DATA': [], 'TIPO DE ENERGIA': [], 'TIPO DE FONTE': [], # 'PREÇO NA DATA DO LEILÃO': [], # 'REAJUSTE': []} } for cntKey in contratos.keys(): tabela['ID'].append(contratos[cntKey]['ID']) tabela['TIPO DE CONTRATO'].append(contratos[cntKey]['TIPO DE CONTRATO']) tabela['CÓDIGO'].append(contratos[cntKey]['CÓDIGO']) tabela['INÍCIO DE SUPRIMENTO'].append(contratos[cntKey]['INÍCIO DE SUPRIMENTO']) tabela['FIM DE SUPRIMENTO'].append(contratos[cntKey]['FIM DE SUPRIMENTO']) tabela['STATUS'].append(contratos[cntKey]['STATUS']) tabela['VENDEDOR'].append(contratos[cntKey]['VENDEDOR']) tabela['EMPREENDIMENTO'].append(contratos[cntKey]['EMPREENDIMENTO']) tabela['SUBMERCADO'].append(contratos[cntKey]['SUBMERCADO']) tabela['TIPO DE LEILÃO'].append(contratos[cntKey]['TIPO DE LEILÃO']) tabela['PRODUTO'].append(contratos[cntKey]['PRODUTO']) tabela['DATA'].append(contratos[cntKey]['DATA']) tabela['TIPO DE ENERGIA'].append(contratos[cntKey]['TIPO DE ENERGIA']) tabela['TIPO DE FONTE'].append(contratos[cntKey]['TIPO DE FONTE']) if mes_ano == 'Mensal': for x in range(len(datas) -1,-1,-1): data = date(int(datas[x].split('-')[2]),int(datas[x].split('-')[1]),int(datas[x].split('-')[0])) inicio = date(int(inicioData.split('-')[0]),int(inicioData.split('-')[1]),int(inicioData.split('-')[2])) fim = date(int(fimData.split('-')[0]),int(fimData.split('-')[1]),int(fimData.split('-')[2])) # inicio = date(2019,1,1) # fim = date(2019,6,1) if inicio <= data <= fim: continue else: datas.pop(x) for data in datas: tabela.update({data:[]}) cont = 0 mw = 0 keys = valorContrato.keys() for data in datas: for idContrato in tabela['ID']: cont = cont + 1 idvlcnt = idContrato + '-' + data if idvlcnt in keys: if mwh_mwm == 'MWh': mw = valorContrato[idvlcnt]['mwh'] elif mwh_mwm == 'MWm': mw = valorContrato[idvlcnt]['mwm'] else: break else: mw = 0 tabela[data].append( str(round(mw, 5)).replace('.',',') ) mw = 0 #print(tabela) for data in datas: tabela[funcoes.transforma_data(data).upper()] = tabela[data] del tabela[data] else: anos = [] datas = [] for chave in valorContrato.keys(): datas.append(chave[-10:]) datas = funcoes.remove_repetidos(datas) anos = funcoes.remove_repetidos(map(funcoes.separa_anos,datas)) for ano in anos: tabela.update({ano:[]}) mw = 0 keys = valorContrato.keys() for ano in anos: for idContrato in tabela['ID']: for x in range(1,13): if x <= 9: idvlcnt = idContrato + '-01-0' + str(x) + '-' + ano else: idvlcnt = idContrato + '-01-' + str(x) + '-' + ano if idvlcnt in keys: if mwh_mwm == 'MWh': mw = mw + valorContrato[idvlcnt]['mwh'] elif mwh_mwm == 'MWm': mw = mw + valorContrato[idvlcnt]['mwm'] else: break else: continue if mwh_mwm == 'MWm': horas = funcoes.numero_horas_ano(ano) mw = mw / horas tabela[ano].append( str(round(mw, 5)).replace('.',',') ) mw = 0 tabela.pop('ID') return tabela else: resumido = contrato resumidos = {} for chave in resumido.keys(): resumidos.update({chave: resumido[chave]}) datas = [] for chave in resumidos.keys(): datas.append(resumidos[chave]['data']) datas = funcoes.remove_repetidos(datas) datas.sort(key=lambda l: l.split('-')[2] + '-' + l.split('-')[1] + '-' + l.split('-')[0]) for x in range(len(resumidos.keys()) -1,-1,-1): idResumido = list(resumidos.keys())[x] if filtros['TIPO DE CONTRATO']: if resumidos[idResumido]['tipo de contrato'] in filtros['TIPO DE CONTRATO']: del resumidos[idResumido] if filtros['TIPO DE LEILÃO']: if x < len(resumidos) and idResumido in resumidos.keys(): if resumidos[idResumido]['tipo de leilao'] in filtros['TIPO DE LEILÃO']: del resumidos[idResumido] if filtros['PRODUTO']: if x < len(resumidos) and idResumido in resumidos.keys(): if resumidos[idResumido]['produto'] in filtros['PRODUTO']: del resumidos[idResumido] tabela = { 'TIPO DE CONTRATO': [], 'TIPO DE LEILÃO': [], 'PRODUTO': [], 'DATA': [], } ids=[] for rsm in resumidos.keys(): ids.append(rsm[:-11]) ids = list(dict.fromkeys(ids)) for i in ids: tabela['TIPO DE CONTRATO'].append(i.split(';')[0] ) tabela['TIPO DE LEILÃO'].append(i.split(';')[1]) tabela['PRODUTO'].append(i.split(';')[2]) tabela['DATA'].append(i.split(';')[3]) if mes_ano == 'Mensal': for x in range(len(datas) -1,-1,-1): data = date(int(datas[x].split('-')[2]),int(datas[x].split('-')[1]),int(datas[x].split('-')[0])) inicio = date(int(inicioData.split('-')[0]),int(inicioData.split('-')[1]),int(inicioData.split('-')[2])) fim = date(int(fimData.split('-')[0]),int(fimData.split('-')[1]),int(fimData.split('-')[2])) # inicio = date(2019,1,1) # fim = date(2019,6,1) if inicio <= data <= fim: continue else: datas.pop(x) for data in datas: tabela.update({data:[]}) mw = 0 for data in datas: for x in range(len(tabela['TIPO DE CONTRATO'])): idResumido = str(tabela['TIPO DE CONTRATO'][x] + ';' + tabela['TIPO DE LEILÃO'][x] + ';' + tabela['PRODUTO'][x] + ';' + tabela['DATA'][x] + ';' + data) if mwh_mwm == 'MWh': mw = resumidos[idResumido]['soma mwh'] elif mwh_mwm == 'MWm': mw = resumidos[idResumido]['soma mwm'] else: break tabela[data].append( str(round(mw, 5)).replace('.',',') ) mw = 0 for data in datas: tabela[funcoes.transforma_data(data).upper()] = tabela[data] del tabela[data] else: anos = funcoes.remove_repetidos(map(funcoes.separa_anos,datas)) for ano in anos: tabela.update({ano:[]}) mw = 0 for x in range(len(tabela['TIPO DE CONTRATO'])): for data in datas: idResumido = str(tabela['TIPO DE CONTRATO'][x] + ';' + tabela['TIPO DE LEILÃO'][x] + ';' + tabela['PRODUTO'][x] + ';' + tabela['DATA'][x] + ';' + data) if mwh_mwm == 'MWh': mw += resumidos[idResumido]['soma mwh'] elif mwh_mwm == 'MWm': mw += resumidos[idResumido]['soma mwh'] else: break if data[:5] == '01-12': if mwh_mwm == 'MWm': horas = funcoes.numero_horas_ano(datas[x][-4:]) mw = mw / horas tabela[data[-4:]].append( str(round(mw, 5)).replace('.',',') ) mw = 0 return tabela