def insert_outorga(outorgas_pb, resertvats): today = date.today() for res in resertvats: acude = outorgas_pb["Açude Monitorados"][0] expira = outorgas_pb["Expiração da Outorga"][0] vazao = outorgas_pb["Vazão Horária (m³/h)"][0] latitude = outorgas_pb["Latitude"][0] longitude = outorgas_pb["Longitude"][0] uso = outorgas_pb["Tipo de Uso"][0] listaDados = [] if remove_accents(acude) == remove_accents( res[0]) and expira != "null" and vazao != "null": data = datetime.strptime(outorgas_pb["Expiração da Outorga"][0], "%d/%m/%Y").date() vazao = float(vazao) * 24.00 listaDados.append( [data, vazao, latitude, longitude, remove_accents(uso)]) if outorgas.get(acude) != None: index = check_data(acude, listaDados) if index != None: if outorgas[acude][index][0] < listaDados[0][0]: global outorgas outorgas[acude][index] = listaDados[0] else: global outorgas outorgas[acude].append(listaDados[0]) else: global outorgas outorgas[acude] = [[ data, vazao, latitude, longitude, remove_accents(uso) ]] vazao_total = sum_vazao(acude) query = """UPDATE tb_reservatorio SET outorga=""" + str( vazao_total) + """ WHERE id=""" + str(res[1]) aux_collection_insert.update_BD(query)
from datetime import datetime print str(datetime.now()) + " - script horario iniciado" import aesa import aux_collection_insert import uhe aux_collection_insert.update_BD('call refresh_mv_monitoramento;') print str(datetime.now()) + " - script horario concluido"
def create_outorga(): query = """ALTER TABLE tb_reservatorio ADD COLUMN outorga MEDIUMTEXT NULL AFTER demanda""" aux_collection_insert.update_BD(query)
" mo2.data_info data_info, mo2.cota cota, mo2.volume volume, mo2.volume_percentual volumePercentual " "FROM tb_estado e, tb_municipio mu, tb_reservatorio_municipio rm, tb_reservatorio r, " "(SELECT mon.id id_reservatorio, mo.cota, mo.volume, mo.volume_percentual, date_format(mo.data_informacao,'%d-%m-%Y') data_info " "FROM tb_monitoramento mo RIGHT JOIN (SELECT r.id, max(m.data_informacao) AS maior_data FROM tb_reservatorio r " "LEFT OUTER JOIN tb_monitoramento m ON r.id=m.id_reservatorio GROUP BY r.id) mon ON mo.id_reservatorio=mon.id " "AND mon.maior_data=mo.data_informacao) mo2 WHERE e.id = mu.id_estado and mu.id=rm.id_municipio and rm.id_reservatorio=r.id " "and r.id=mo2.id_reservatorio and e.sigla='PB';") url = "http://www.aesa.pb.gov.br/aesa-website/resources/data/volumeAcudes/ultimosVolumes/data.json" response = urllib.urlopen(url) to_insert = [] aesa = json.loads(response.read()) for json_reservatorio in aesa: for reserv in paraiba: similaridade_acude = fuzz.token_set_ratio(remove_accents(reserv[1]),remove_accents(json_reservatorio["acude"])) apelido = re.sub(remove_accents(reserv[1])+'|acude|barragem|lagoa|[()-]| do | da | de ','',remove_accents(reserv[2]), flags=re.IGNORECASE).strip() similaridade_apelido = fuzz.token_set_ratio(remove_accents(apelido),remove_accents(json_reservatorio["acude"])) capacidade = round(float(json_reservatorio["capacidade"])/1000000,2) if ((similaridade_acude>=80 or similaridade_apelido>=80)): if (json_reservatorio["data"] is not None and ((reserv[4] is None) or (datetime.strptime(reserv[4], '%d-%m-%Y') < datetime.strptime(json_reservatorio["data"][2], '%Y-%m-%d')))): ultimo_monitoramento = [reserv[0],reserv[5], reserv[6], reserv[7], reserv[4]] to_add = [[reserv[0],'',round(float(json_reservatorio["data"][1])/1000000,2), (float(json_reservatorio["data"][1])/float(json_reservatorio["capacidade"]))*100, datetime.strptime(json_reservatorio["data"][2], '%Y-%m-%d').strftime('%Y-%m-%d')]] to_insert.extend(aux_collection_insert.retira_ruido(to_add,ultimo_monitoramento, "AESA")) # Para mostrar ao bot que o reservatorio foi atualizado aux_collection_insert.update_BD("UPDATE tb_user_reservatorio SET atualizacao_reservatorio = 1 WHERE id_reservatorio="+str(reserv[0])+";") aux_collection_insert.insert_many_BD(to_insert)
if (contador_coluna == len(cabecalho)): contador_coluna = 0 if (datetime.strptime( data_inicial, formato_data_2) < datetime.strptime( json_insert["DataInformacao"], formato_data_1)): cota = json_insert["Cota"].replace(",", ".") volume = json_insert["Volume"].replace(",", ".") volumePercentual = json_insert["VolumePercentual"].replace( ",", ".") dataInformacao = datetime.strptime( json_insert["DataInformacao"], formato_data_1).strftime(formato_data_3) id_reservatorio = reserv to_insert.append([ id_reservatorio, cota, volume, volumePercentual, dataInformacao ]) json_insert = {} if (len(to_insert) > 0): aux_collection_insert.update_BD( "UPDATE tb_user_reservatorio SET atualizacao_reservatorio = 1 WHERE id_reservatorio=" + reserv + ";") aux_collection_insert.insert_many_BD( aux_collection_insert.retira_ruido(to_insert, monitoramento, "ANA")) time.sleep(5)
def insert_user(username, password): hashed_pass = hash_all(username, 'INSA', password) query = '''INSERT INTO tb_user (username, password) VALUES ("''' + username + '''","''' + hashed_pass + '''")''' aux_collection_insert.update_BD(query)
def create_table(): query = '''CREATE TABLE IF NOT EXISTS tb_user ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, username VARCHAR(45) NOT NULL, password VARCHAR(60) NOT NULL)''' aux_collection_insert.update_BD(query)
def drop_table(): query = '''DROP TABLE IF EXISTS tb_user''' aux_collection_insert.update_BD(query)
def demandas(data, reservatId): mes_atual = int(data.month) mes_limite = mes_atual - 12 ano_atual = int(data.year) if mes_limite > 0: ano_limite = ano_atual else: ano_limite = ano_atual - 1 mes_limite = 12 + mes_limite ld = [] query = """SELECT data_informacao, volume FROM tb_monitoramento WHERE id_reservatorio="""+str(reservatId)+""" AND data_informacao BETWEEN '"""+str(ano_limite)+"""-"""+str(mes_limite)+"""-01' AND '"""+str(ano_atual)+"""-"""+str(mes_atual)+"""-31' ORDER BY data_informacao ASC""" rows = rowsToList(aux_collection_insert.consulta_BD(query)) if (len(listaAreas) <= 0) or (len(listaVolumes) <= 0): demanda_res = "NULL" query = """UPDATE tb_reservatorio SET demanda="""+str(demanda_res)+""" WHERE id="""+str(reservatId) aux_collection_insert.update_BD(query) elif len(rows) > 0: lista_datas = [] lista_dias = [] lista_volumes = [] for i in range(0, len(rows)-3, 2): data_inicial = rows[i] data_final = rows[i+2] vol_inicial = rows[i+1] vol_final = rows[i+3] dif_datas = data_final - data_inicial if (float(vol_inicial) > float(vol_final)) and (dif_datas.days <= 30): if data_inicial not in lista_datas: lista_dias.append(data_inicial) if data_final not in lista_datas: lista_dias.append(data_final) lista_volumes.append([vol_inicial, vol_final]) lista_datas.append([data_inicial, data_final]) lista_dem = [] for j in range(len(lista_volumes)): evapDiv_inicial = 0 evapDiv_final = 0 mes_inicial = int(lista_datas[j][0].month) for data in lista_dias: evapDiv_inicial += 1 if mes_inicial == int(data.month) else 0 global evapDiv evapDiv = evapDiv_inicial vp_inicial = volumeParcial(mes_inicial, float(lista_volumes[j][0]) * 1000000.00, reservatId) mes_final = int(lista_datas[j][1].month) for data in lista_dias: evapDiv_final += 1 if mes_final == int(data.month) else 0 global evapDiv evapDiv = evapDiv_inicial vp_final = volumeParcial(mes_final, float(lista_volumes[j][1]) * 1000000.00, reservatId) dif_datas = lista_datas[j][1] - lista_datas[j][0] dem = (vp_inicial - vp_final) / dif_datas.days lista_dem.append(dem) demanda_res = sum(lista_dem) / len(lista_dem) if len(lista_dem) > 0 else "NULL" return demanda_res
def demandas(data, reservatId): mes_atual = int(data.month) mes_limite = mes_atual - 12 ano_atual = int(data.year) if mes_limite > 0: ano_limite = ano_atual else: ano_limite = ano_atual - 1 mes_limite = 12 + mes_limite ld = [] query = """SELECT data_informacao, volume FROM tb_monitoramento WHERE id_reservatorio=""" + str( reservatId) + """ AND data_informacao BETWEEN '""" + str(ano_limite) + """-""" + str( mes_limite) + """-01' AND '""" + str(ano_atual) + """-""" + str( mes_atual) + """-31' ORDER BY data_informacao ASC""" rows = rowsToList(aux_collection_insert.consulta_BD(query)) if (len(listaAreas) <= 0) or (len(listaVolumes) <= 0): demanda_res = "NULL" query = """UPDATE tb_reservatorio SET demanda=""" + str( demanda_res) + """ WHERE id=""" + str(reservatId) aux_collection_insert.update_BD(query) elif len(rows) > 0: lista_datas = [] lista_dias = [] lista_volumes = [] for i in range(0, len(rows) - 3, 2): data_inicial = rows[i] data_final = rows[i + 2] vol_inicial = rows[i + 1] vol_final = rows[i + 3] dif_datas = data_final - data_inicial if (float(vol_inicial) > float(vol_final)) and (dif_datas.days <= 30): if data_inicial not in lista_datas: lista_dias.append(data_inicial) if data_final not in lista_datas: lista_dias.append(data_final) lista_volumes.append([vol_inicial, vol_final]) lista_datas.append([data_inicial, data_final]) lista_dem = [] for j in range(len(lista_volumes)): evapDiv_inicial = 0 evapDiv_final = 0 mes_inicial = int(lista_datas[j][0].month) for data in lista_dias: evapDiv_inicial += 1 if mes_inicial == int(data.month) else 0 global evapDiv evapDiv = evapDiv_inicial vp_inicial = volumeParcial(mes_inicial, float(lista_volumes[j][0]) * 1000000.00, reservatId) mes_final = int(lista_datas[j][1].month) for data in lista_dias: evapDiv_final += 1 if mes_final == int(data.month) else 0 global evapDiv evapDiv = evapDiv_inicial vp_final = volumeParcial(mes_final, float(lista_volumes[j][1]) * 1000000.00, reservatId) dif_datas = lista_datas[j][1] - lista_datas[j][0] dem = (vp_inicial - vp_final) / dif_datas.days lista_dem.append(dem) demanda_res = sum(lista_dem) / len(lista_dem) if len( lista_dem) > 0 else "NULL" return demanda_res