def update_rec(data): sql_query = """ UPDATE "РЭС" SET "Сеть" = {Сеть}, "Название" = '{Название}', Название-примечание = '{Название-примечание}' where id = {id} """ Sql.exec(query=sql_query, args=data)
def update_network(data): sql_query = """ UPDATE "Сеть" SET "Компания" = {Компания}, "Название" = '{Название}' where id = {id} """ Sql.exec(query=sql_query, args=data)
def update_lep(data): sql_query = """ UPDATE "ЛЭП" SET "Сеть" = {Сеть}, "Название" = '{Название}', "Название-примечание" = '{Название-примечание}', "Диспетчерское_наименование" = '{Диспетчерское_наименование}', "Напряжение" = {Напряжение}, "Техническое_состояние" = '{Техническое_состояние}', "Номер_по_порядку" = {Номер_по_порядку}, "Напряжение-примечание" = '{Напряжение-примечание}', "Техническое_состояние-примечание" = '{Техническое_состояние-примечание}', "Номер_по_порядку-примечание" = '{Номер_по_порядку-примечание}' where id = {id} """ Sql.exec(query=sql_query, args=data)
def update_pc(data): sql_query = """ UPDATE "Подстанция" SET "Сеть" = {Сеть}, "Год_ввода" = '{Год_ввода}', "Год_ввода-примечание" = '{Год_ввода-примечание}', "Название" = '{Название}', "Подстанционный_номер" = {Подстанционный_номер}, "Класс_напряжения" = '{Класс_напряжения}', "РЭС" = {РЭС}, "Название-примечание" = '{Название-примечание}', "Подстанционный_номер-примечание" = '{Подстанционный_номер-примечание}', "Класс_напряжения-примечание" = '{Класс_напряжения-примечание}' where id = {id} """ Sql.exec(query=sql_query, args=data)
def add_company_label(id_company, cursor): sql_query = f'select * from "Компания" where id = {id_company}' company = Sql.exec(query=sql_query)[0] sheet.merge_cells(f'A{cursor}:M{cursor}') fill = PatternFill(start_color='BFBFBF', end_color='BFBFBF', fill_type='solid') sheet[f'A{cursor}'].alignment = Alignment(horizontal='center') sheet[f'A{cursor}'] = company.get("Название") sheet[f'A{cursor}'].fill = fill
def get_pc(id_network): sql_query = f""" select * from "Подстанция" where "Сеть" = {id_network} order by id """ return Sql.exec(query=sql_query)
def get_provod(id_lep): sql_query = f''' select 'Провод' "Тип_записи" , * from "Провод" where "ЛЭП" = {id_lep} order by id ''' return Sql.exec(query=sql_query)
def get_lep(id_network): sql_query = f''' select 'ЛЭП' "Тип_записи" , * from "ЛЭП" where "Сеть" = {id_network} order by id ''' return Sql.exec(query=sql_query)
def get_pc(id_rec): sql_query = f''' select 'Подстанция' "Тип_записи" , * from "Подстанция" where "РЭС" = {id_rec} order by id ''' return Sql.exec(query=sql_query)
def get_rec(id_network): sql_query = f''' select 'РЭС' "Тип_записи" , * from "РЭС" where "Сеть" = {id_network} order by id ''' return Sql.exec(query=sql_query)
def update_provod(data): sql_query = """ UPDATE "Провод" SET "ЛЭП" = {ЛЭП}, "Марка" = '{Марка}', "Год_ввода" = '{Год_ввода}', "Количество_цепей" = '{Количество_цепей}', "Длина_по_трассе" = '{Длина_по_трассе}', "Длина_по_цепям" = '{Длина_по_цепям}', "Длина_участка_по_трассе" = '{Длина_участка_по_трассе}', "Длина_участка_по_цепям" = '{Длина_участка_по_цепям}', "Марка-примечание" = '{Марка-примечание}', "Год_ввода-примечание" = '{Год_ввода-примечание}', "Количество_цепей-примечание" = '{Количество_цепей-примечание}', "Длина_по_трассе-примечание" = '{Длина_по_трассе-примечание}', "Длина_по_цепям-примечание" = '{Длина_по_цепям-примечание}', "Длина_участка_по_цепям-примечание" = '{Длина_участка_по_цепям-примечание}' where id = {id} """ Sql.exec(query=sql_query, args=data)
def get_trans(id_pc): sql_query = f''' select array[]::integer[] children , 'Трансформатор' "Тип_записи" , * from "Трансформатор" where "Подстанция" = {id_pc} order by id ''' return Sql.exec(query=sql_query)
def get_pc_w_rec(id_network): sql_query = f''' select 'Подстанция' "Тип_записи" , * from "Подстанция" where "Сеть" = {id_network} and "РЭС" is NULL order by id ''' return Sql.exec(query=sql_query)
def get_networks(id_company): sql_query = f''' select "Компания"."Название" "НазваниеРодителя" , 'Cеть' "Тип_записи" , "Сеть".* from "Компания" left join "Сеть" on "Сеть"."Компания" = "Компания".id where "Компания".id = {id_company} ''' return Sql.exec(query=sql_query)
def update_trans(data): sql_query = """ UPDATE "Трансформатор" SET "Подстанция" = {Подстанция}, "Год_изготовления" = '{Год_изготовления}', "Год_включения" = '{Год_включения}', "Тип" = '{Тип}', "Номинальная_мощность" = '{Номинальная_мощность}', "Техническое_состояние" = '{Техническое_состояние}', "Номер" = '{Номер}', "Год_изготовления-примечание" = '{Год_изготовления-примечание}', "Год_включения-примечание" = '{Год_включения-примечание}', "Тип-примечание" = '{Тип-примечание}', "Номинальная_мощность-примечание" = '{Номинальная_мощность-примечание}', "Техническое_состояние-примечание" = '{Техническое_состояние-примечание}', "Номер-примечание" = '{Номер-примечание}' where id = {id} """ Sql.exec(query=sql_query, args=data)
def count_trans_in_rec(rec): sql_query = """ select count(1) from "Трансформатор" join "Подстанция" on "Подстанция".id = "Трансформатор"."Подстанция" join "РЭС" on "РЭС".id = "Подстанция"."РЭС" """ try: result = Sql.exec(query=sql_query)[0]['count'] except: result = 0 return result
def load_res_table(answers, comp_id): col_name_res = None col_podst_num = None col_podst_name = None col_podst_year = None col_transf_type_napr_nom_p = None col_podst_class_napr = None col_transf_year_izg = None col_transf_year_on = None col_transf_type = None col_transf_nom_p = None col_transf_techsost = None col_transf_number = None for k in range(20): for i in range(len(answers[k])): if "наименование рэс" in str(answers[k][i]).lower(): col_name_res = i elif "наименование подстанции" in str( answers[k][i]).lower() or "наименование и подстанционный номер" in str(answers[k][i]).lower(): col_podst_num = i col_podst_name = i elif "год ввода" in str(answers[k][i]).lower(): col_podst_year = i elif "тип подстанции".lower() in str(answers[k][i]).lower(): col_podst_class_napr = i elif "тип, мощность".lower() in str(answers[k][i]).lower(): col_transf_type_napr_nom_p = i elif "№ \nтр-ра" in str(answers[k][i]).lower(): col_transf_number = i elif "тип трансфор" in str(answers[k][i]).lower(): col_transf_type = i elif "полная" in str(answers[k][i]).lower() and "номинальная мощность" in str(answers[k - 1][i]).lower(): col_transf_nom_p = i elif "год изготовления" in str(answers[k][i]).lower(): col_transf_year_izg = i elif "год включения" in str(answers[k][i]).lower() or "год установки транс" in str(answers[k][i]).lower(): col_transf_year_on = i elif "состояние тр-ра" in str(answers[k][i]).lower() or "техническое состояние" in str( answers[k][i]).lower(): col_transf_techsost = i num_max = 30 num_set = None name_res = None id_res = None id_podst = None podst_name_save = None podst_year = None podst_class_napr = None transf_type = None transf_year_izg = None transf_year_on = None transf_nom_p = None transf_techsost = None for i in range(len(answers)): if i < num_max: try: if 'Сети' not in str(answers[i][0]): if col_transf_year_izg is not None and col_transf_year_on is not None: if answers[i+1][col_transf_year_izg] is not None and answers[i+1][col_transf_year_on]: if int(answers[i + 1][col_transf_year_izg]) > 1800 and int( answers[i + 1][col_transf_year_izg]) < 2200 and int( answers[i + 1][col_transf_year_on]) > 1800 and int( answers[i + 1][col_transf_year_on]) < 2200: num_max = i query_json_format = { "SETT": str(SETT).replace("'", '"'), "sett_name": num_set, "comp_id": comp_id } query = SQL_ADD_SETT.format(**query_json_format).replace("'None'", "NULL").replace( "None", "NULL") num_set = int(Sql.exec(query=query)[0]['id']) except: continue if 'Сети' not in str(answers[i]): continue if 'Сети' in str(answers[i][0]): num_max = i sql_answer = Sql.exec(SQL_FIND_SETT.format(sett_name=answers[i][0], comp_id=comp_id)) try: num_set = int(sql_answer[0]["id"]) except: query_json_format = { "SETT": str(SETT).replace("'", '"'), "sett_name": answers[i][0], "comp_id": comp_id } query = SQL_ADD_SETT.format(**query_json_format).replace("'None'", "NULL").replace("None", "NULL") num_set = int(Sql.exec(query=query)[0]['id']) continue if col_name_res is not None: if answers[i][col_name_res] is not None and name_res != answers[i][col_name_res]: name_res = answers[i][col_name_res] query_json_format = { "RES": str(RES).replace("'", '"'), "num_set": num_set, "name_res": name_res, } query = SQL_ADD_RES.format(**query_json_format).replace("'None'", "NULL").replace("None", "NULL") id_res = int(Sql.exec(query=query)[0]['id']) if col_podst_num is not None: if answers[i][col_podst_num] is not None: try: podst_num = int(answers[i][col_podst_num]) podst_name = "ПС-{}".format(int(answers[i][col_podst_name])) except: try: podst_num = int(answers[i][col_podst_num].split(' ,')[0].split(',')[0].split("-")[-1]) except: podst_num = None podst_name = answers[i][col_podst_name].split(',')[0] if podst_name_save != podst_name and podst_name is not None: podst_name_save = podst_name if col_podst_class_napr is not None: podst_class_napr = answers[i][col_podst_class_napr] elif col_transf_type_napr_nom_p is not None: podst_class_napr = answers[i][col_transf_type_napr_nom_p].replace( answers[i][col_transf_type_napr_nom_p].split("/")[0] + "/", "") if col_podst_year is not None: podst_year = answers[i][col_podst_year] else: if col_transf_year_on is not None: podst_year = 10000 kj = len(answers) - i for jk in range(kj): podst_name_new = None try: if answers[i+jk][col_podst_name] is not None: podst_name_new = "ПС-{}".format(int(answers[i+jk][col_podst_name])) except: if answers[i + jk][col_podst_name] is not None: podst_name_new = answers[i+jk][col_podst_name].split(',')[0] if answers[i+jk][col_transf_year_on] is not None and podst_name_new == podst_name: if podst_year > int(answers[i+jk][col_transf_year_on]): podst_year = int(answers[i+jk][col_transf_year_on]) else: break query_json_format = { "PODSTANC": str(PODSTANC).replace("'", '"'), "name": podst_name, "num_podst": podst_num, "year": podst_year, "class_napr": podst_class_napr, "id_res": id_res, "id_set": num_set } query = SQL_ADD_PODSTANC.format(**query_json_format).replace("'None'", "NULL").replace("None", "NULL") id_podst = int(Sql.exec(query=query)[0]['id']) if col_transf_number is not None or col_podst_name is not None: if col_transf_number is None: transf_number = None if answers[i][col_podst_name] is not None: transf_number = answers[i][col_podst_name].replace(answers[i][col_podst_name].split(',')[0] + ",", "") transf_number = transf_number.replace("-" + transf_number.split("-")[-1], "") else: transf_number = answers[i][col_transf_number] if transf_number is not None: if col_transf_type is not None: transf_type = answers[i][col_transf_type] elif col_transf_type_napr_nom_p is not None: transf_type = answers[i][col_transf_type_napr_nom_p].split("-")[0] if col_transf_year_izg is not None: transf_year_izg = answers[i][col_transf_year_izg] if col_transf_year_on is not None: transf_year_on = answers[i][col_transf_year_on] if col_transf_nom_p is not None: transf_nom_p = answers[i][col_transf_nom_p] elif col_transf_type_napr_nom_p is not None: transf_nom_p = int(answers[i][col_transf_type_napr_nom_p].split("-")[1].split("/")[0]) / 1000 if col_transf_techsost is not None: transf_techsost = answers[i][col_transf_techsost] try: transf_number = int(transf_number) except: pass query_json_format = { "TRANSFORM": str(TRANSFORM).replace("'", '"'), "id_podst": id_podst, "year_izg": transf_year_izg, "year_on": transf_year_on, "type": transf_type.split("-")[0], "nom_p": transf_nom_p, "techsost": transf_techsost, "number": transf_number } query = SQL_ADD_TRANSFORM.format(**query_json_format).replace("'None'", "NULL").replace("None", "NULL") Sql.exec(query=query)
def load_lep_table(answers, comp_id): col_num_pp = None col_name_lep = None col_god_vvoda = None col_disp_name = None col_napr = None col_colcep = None col_dlpotr = None col_dluchpotr = None col_dlpocep = None col_dluchpocep = None col_marka = None col_tehsost = None for k in range(20): for i in range(len(answers[k])): if str(answers[k][i]).lower() in ["№ п/п", "№", 'п/п', '№ п.п.']: col_num_pp = i elif "наименование лэп" in str(answers[k][i]).lower(): col_name_lep = i elif "диспетчерский номер" in str(answers[k][i]).lower(): col_disp_name = i elif "год ввода" in str(answers[k][i]).lower(): col_god_vvoda = i elif "U ном".lower() in str(answers[k][i]).lower() or "напряжение" in str(answers[k][i]).lower(): col_napr = i elif "цепей" in str(answers[k][i]).lower(): col_colcep = i elif "по трассе" in str(answers[k][i]).lower() and ( "всего" in str(answers[k - 2][i]).lower() or "провод" in str(answers[k - 1][i]).lower()): col_dlpotr = i elif "по трассе" in str(answers[k][i]).lower() and "в том числе" in str(answers[k - 2][i]).lower(): col_dluchpotr = i elif ("по цепям" in str(answers[k][i]).lower() and "всего" in str(answers[k - 2][i - 1]).lower()) or ( "длина в одноцепном" in str(answers[k][i]).lower()): col_dlpocep = i elif "по цепям" in str(answers[k][i]).lower() and "в том числе" in str(answers[k - 2][i-1]).lower(): col_dluchpocep = i elif "марка" in str(answers[k][i]).lower() and ( "провод" in str(answers[k - 1][i]).lower() or "провод" in str( answers[k - 1][i - 1]).lower() or "провод" in str(answers[k - 1][i - 2]).lower()): col_marka = i elif "техническое состояние" in str(answers[k][i]).lower() or "заключение, при-нятое по рез-там то" in str( answers[k][i]).lower(): col_tehsost = i num_set = None num_pp = None id_lep = None year = None colcep = None techsost = None dlport = None dlpocep = None dluchpotr = None dluchpocep = None disp_name = None napr = None num_max = 30 for i in range(len(answers)): if i < num_max: try: if 'Сети' not in str(answers[i][0]): if col_god_vvoda is not None: if answers[i+1][col_god_vvoda] is not None: if int(answers[i+1][col_god_vvoda]) > 1800 and int(answers[i+1][col_god_vvoda]) < 2200: num_max = i query_json_format = { "SETT": str(SETT).replace("'", '"'), "sett_name": num_set, "comp_id": comp_id } query = SQL_ADD_SETT.format(**query_json_format).replace("'None'", "NULL").replace( "None", "NULL") num_set = int(Sql.exec(query=query)[0]['id']) except: continue if 'Сети' not in str(answers[i]) and '-' not in str(answers[i][col_marka]): continue if 'Сети' in str(answers[i][0]): num_max = i sql_answer = Sql.exec(SQL_FIND_SETT.format(sett_name=answers[i][0], comp_id=comp_id)) try: num_set = int(sql_answer[0]["id"]) except: query_json_format = { "SETT": str(SETT).replace("'", '"'), "sett_name": answers[i][0], "comp_id": comp_id } query = SQL_ADD_SETT.format(**query_json_format).replace("'None'", "NULL").replace("None", "NULL") num_set = int(Sql.exec(query=query)[0]['id']) continue if col_num_pp is not None: if answers[i][col_num_pp] is not None: num_pp = answers[i][col_num_pp] year = None colcep = None techsost = None if col_name_lep is not None: if answers[i][col_name_lep] is not None: if col_name_lep is not None: if answers[i][col_tehsost] is not None: techsost = answers[i][col_tehsost] if col_napr is not None: napr = answers[i][col_napr] if col_disp_name is not None: disp_name = answers[i][col_disp_name] query_json_format = { "LEP": str(LEP).replace("'", '"'), "num_set": num_set, "num_pp": num_pp, "name": answers[i][col_name_lep], "disp_name": disp_name, "napr": napr, "techsost": techsost } query = SQL_ADD_LEP.format(**query_json_format).replace("'None'", "NULL").replace("None", "NULL") id_lep = int(Sql.exec(query=query)[0]['id']) if col_god_vvoda is not None: if answers[i][col_god_vvoda] is not None: year = answers[i][col_god_vvoda] if col_colcep is not None: if answers[i][col_colcep] is not None: colcep = answers[i][col_colcep] if col_dlpotr is not None: dlport = answers[i][col_dlpotr] if col_dlpocep is not None: dlpocep = answers[i][col_dlpocep] if col_dluchpotr is not None: dluchpotr = answers[i][col_dluchpotr] if col_dluchpocep is not None: dluchpocep = answers[i][col_dluchpocep] query_json_format = { "PROVOD": str(PROVOD).replace("'", '"'), "id_lep": id_lep, "name": answers[i][col_marka], "year": year, "colcep": colcep, "dlpotr": dlport, "dlpocep": dlpocep, "dluchpotr": dluchpotr, "dluchpocep": dluchpocep, } Sql.exec(query=SQL_ADD_PROVOD.format(**query_json_format).replace("'None'", "NULL").replace("None", "NULL"))
def get(self): sql_query = '''table "Компания"''' test = Sql.exec(query=sql_query) return test, 200, names.CORS_HEADERS
def create_word(comp_id): sql_answer = Sql.exec(SQL_NAME_COMPANY.format(id=comp_id)) try: name_company = sql_answer[0]["Название"] except: return "Данной компании не существует" doc = docx.Document() header = doc.add_paragraph("") header.add_run( "Анализ технического состояния и возрастная структура линий электропередачи и подстанций" ).bold = True year = 2020 date = "01.01.{}".format(year) sql_answer = Sql.exec(SQL_FIND_KV.format(id=comp_id)) try: kv = sql_answer[0]["Напряжение"] except: kv = sql_answer[0]["Напряжение"] first_str = doc.add_paragraph("") first_str.add_run(name_company).bold = True str1 = "Протяженность ВЛ {kv} кВ и КЛ {kv} кВ, количество и суммарная мощность ПС {kv} кВ, находящихся в собственности {name_company}, по состоянию на {date} г. составили:" doc.add_paragraph(str1.format(kv=kv, date=date, name_company=name_company)) table = doc.add_table(rows=2, cols=2) table.style = 'Table Grid' find_kab = Sql.exec(SQL_FIND_KAB_DL.format(id=comp_id)) kl, vl = find_vl_kl(find_kab) cell = table.cell(0, 0) cell.text = "Протяженность действующих ВЛ и КЛ\n(в одноцепном исчислении), км" cell = table.cell(1, 0) cell.text = "Количество и суммарная установленная\nмощность ПС, шт./МВА" cell = table.cell(0, 1) cell.text = "ВЛ – {vl}\nКЛ – {kl}".format(vl=int(vl * 100) / 100, kl=int(kl * 100) / 100) mva = 0 sql_answers = Sql.exec(SQL_FIND_ALL_MOSH.format(id=comp_id)) for mosh in sql_answers: try: mva += float(mosh["Номинальная_мощность"]) except: pass sht = len(Sql.exec(SQL_FIND_ALL_PODST.format(id=comp_id))) cell = table.cell(1, 1) cell.text = "{sht} / {mva}".format(sht=sht, mva=int(mva * 100) / 100) doc.add_paragraph("") str = "Далее приведена возрастная структура линий электропередачи и подстанций {kv} кВ {name_company} по состоянию на {date} г. с разбивкой по электросетевым предприятиям. " doc.add_paragraph(str1.format(kv=kv, date=date, name_company=name_company)) sql_answers = Sql.exec(SQL_FIND_SETT.format(id=comp_id)) for sql_ans in sql_answers: name_predpr = sql_ans["Название"] first_str = doc.add_paragraph("") first_str.add_run("Филиал {nc} {np}".format( nc=name_company, np=name_predpr)).bold = True str = "Протяженность ВЛ {kv} кВ и КЛ {kv} кВ, количество и суммарная мощность ПС {kv} кВ, обслуживаемых {np} по состоянию на {date} г. составили:" doc.add_paragraph(str.format(kv=kv, np=name_predpr, date=date)) table = doc.add_table(rows=2, cols=2) table.style = 'Table Grid' cell = table.cell(0, 0) cell.text = "Протяженность действующих ВЛ и КЛ\n(в одноцепном исчислении), км" cell = table.cell(1, 0) cell.text = "Количество и суммарная установленная\nмощность ПС, шт./МВА" find_kab = Sql.exec(SQL_FIND_KAB_SET_DL.format(id=sql_ans["id"])) kl, vl = find_vl_kl(find_kab) cell = table.cell(0, 1) cell.text = "ВЛ – {vl}\nКЛ – {kl}".format(vl=int(vl * 100) / 100, kl=int(kl * 100) / 100) mva = 0 sql_answers = Sql.exec(SQL_FIND_SETT_MOSH.format(id=sql_ans["id"])) for mosh in sql_answers: try: mva += float(mosh["Номинальная_мощность"]) except: pass sht = len(Sql.exec(SQL_FIND_SETT_PODST.format(id=sql_ans["id"]))) cell = table.cell(1, 1) cell.text = "{sht} / {mva}".format(sht=sht, mva=int(mva * 100) / 100) text = "Анализ технического состояния электросетевых объектов напряжением {kv} кВ {np} показал:" doc.add_paragraph(text.format(kv=kv, np=name_predpr)) text = "• {kolvo_podst} подстанций ({proc}% от общего числа ПС {kv} кВ) отработали более 50 лет;" kolvo_podst = len( Sql.exec(SQL_FIND_PODST_OLD.format(id=sql_ans["id"], year=year))) proc = 0 if kolvo_podst > 0: proc = int(kolvo_podst / sht * 10000) / 100 doc.add_paragraph( text.format(kolvo_podst=kolvo_podst, proc=proc, kv=kv)) text = "• {kolvo_mosh} МВА трансформаторной мощности ({proc}% от общей трансформаторной мощности напряжением {kv} кВ) отработало более 50 лет;" kolvo_mosh = len( Sql.exec(SQL_FIND_PODST_OLD.format(id=sql_ans["id"], year=year))) proc = 0 if kolvo_mosh > 0: proc = int(kolvo_mosh / mva * 10000) / 100 doc.add_paragraph(text.format(kolvo_mosh=kolvo_mosh, proc=proc, kv=kv)) text = "• воздушные линии электропередачи {kv} кВ протяженностью {voz_dl} км в одноцепном исчислении ({proc}% от общей протяженности ВЛ {kv} кВ) отработали более 50 лет;" text1 = "• кабельные линии электропередачи {kv} кВ протяженностью {kab_dl} км ({proc}% от общей протяженности КЛ {kv} кВ) находятся в эксплуатации до 35 лет." find_kab = Sql.exec( SQL_FIND_KAB_SET_OLD.format(id=sql_ans["id"], year=year)) kls, vls = find_vl_kl(find_kab) proc = 0 if vls > 0: proc = int(vls / vl * 10000) / 100 doc.add_paragraph( text.format(voz_dl=int(vls * 100) / 100, proc=proc, kv=kv)) proc = 0 if kls > 0: proc = int(kls / kl * 10000) / 100 doc.add_paragraph(text1.format(kab_dl=kls, proc=proc, kv=kv)) doc.save('static/Итоговый_отчёт.docx')