Beispiel #1
0
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)
Beispiel #2
0
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"
Beispiel #3
0
def create_outorga():
    query = """ALTER TABLE tb_reservatorio ADD COLUMN outorga MEDIUMTEXT NULL AFTER demanda"""
    aux_collection_insert.update_BD(query)
Beispiel #4
0
				" 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)
Beispiel #5
0
        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)
Beispiel #6
0
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)
Beispiel #7
0
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)
Beispiel #8
0
def drop_table():
	query = '''DROP TABLE IF EXISTS tb_user'''
	aux_collection_insert.update_BD(query)
Beispiel #9
0
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
Beispiel #10
0
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