예제 #1
0
def update_rec(data):
    sql_query = """
UPDATE "РЭС"
SET "Сеть" = {Сеть}, "Название" = '{Название}', Название-примечание = '{Название-примечание}'
where id = {id}
    """
    Sql.exec(query=sql_query, args=data)
예제 #2
0
def update_network(data):
    sql_query = """
UPDATE "Сеть"
SET "Компания" = {Компания}, "Название" = '{Название}'
where id = {id}
    """
    Sql.exec(query=sql_query, args=data)
예제 #3
0
def update_lep(data):
    sql_query = """
UPDATE "ЛЭП"
SET "Сеть" = {Сеть}, 
"Название" = '{Название}', 
"Название-примечание" = '{Название-примечание}',
"Диспетчерское_наименование" = '{Диспетчерское_наименование}', 
"Напряжение" = {Напряжение},
"Техническое_состояние" = '{Техническое_состояние}',
"Номер_по_порядку" = {Номер_по_порядку},
"Напряжение-примечание" = '{Напряжение-примечание}',
"Техническое_состояние-примечание" = '{Техническое_состояние-примечание}',
"Номер_по_порядку-примечание" = '{Номер_по_порядку-примечание}'
where id = {id}
        """
    Sql.exec(query=sql_query, args=data)
예제 #4
0
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)
예제 #7
0
def get_provod(id_lep):
    sql_query = f'''
select 
'Провод' "Тип_записи"
, *
from "Провод"
where "ЛЭП" = {id_lep}
order by id
          '''
    return Sql.exec(query=sql_query)
예제 #8
0
def get_lep(id_network):
    sql_query = f'''
select 
'ЛЭП' "Тип_записи"
, *
from "ЛЭП"
where "Сеть" = {id_network}
order by id
          '''
    return Sql.exec(query=sql_query)
예제 #9
0
def get_pc(id_rec):
    sql_query = f'''
select 
'Подстанция' "Тип_записи"
, *
from "Подстанция"
where "РЭС" = {id_rec}
order by id
          '''
    return Sql.exec(query=sql_query)
예제 #10
0
def get_rec(id_network):
    sql_query = f'''
select
'РЭС' "Тип_записи"
, *
from "РЭС"
where "Сеть" = {id_network}
order by id
        '''
    return Sql.exec(query=sql_query)
예제 #11
0
def update_provod(data):
    sql_query = """
UPDATE "Провод"
SET "ЛЭП" = {ЛЭП}, 
"Марка" = '{Марка}', 
"Год_ввода" = '{Год_ввода}',
"Количество_цепей" = '{Количество_цепей}',
"Длина_по_трассе" = '{Длина_по_трассе}',
"Длина_по_цепям" = '{Длина_по_цепям}',
"Длина_участка_по_трассе" = '{Длина_участка_по_трассе}',
"Длина_участка_по_цепям" = '{Длина_участка_по_цепям}',
"Марка-примечание" = '{Марка-примечание}',
"Год_ввода-примечание" = '{Год_ввода-примечание}',
"Количество_цепей-примечание" = '{Количество_цепей-примечание}',
"Длина_по_трассе-примечание" = '{Длина_по_трассе-примечание}',
"Длина_по_цепям-примечание" = '{Длина_по_цепям-примечание}',
"Длина_участка_по_цепям-примечание" = '{Длина_участка_по_цепям-примечание}'
where id = {id}
        """
    Sql.exec(query=sql_query, args=data)
예제 #12
0
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)
예제 #13
0
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)
예제 #14
0
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)
예제 #15
0
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
예제 #17
0
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)
예제 #18
0
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"))
예제 #19
0
 def get(self):
     sql_query = '''table "Компания"'''
     test = Sql.exec(query=sql_query)
     return test, 200, names.CORS_HEADERS
예제 #20
0
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')