testR1
This commit is contained in:
44
main.py
44
main.py
@@ -10,7 +10,7 @@ import tkinter as tk
|
||||
from tkinter import filedialog, messagebox, ttk
|
||||
from pathlib import Path
|
||||
|
||||
from services.data_loader import load_ki, load_table2, build_mif_index
|
||||
from services.data_loader import load_ki, load_table2, build_mif_index, load_table3
|
||||
from services.form_filler import fill_form
|
||||
from services.output_generator import make_filename, combine_forms, generate_table4
|
||||
|
||||
@@ -30,7 +30,8 @@ FONT_LOG = ("Courier New", 9)
|
||||
|
||||
def run_processing(table1_path: str, table2_path: str, mif_dir: str,
|
||||
template_path: str, output_dir: str,
|
||||
log_callback, progress_callback, done_callback):
|
||||
log_callback, progress_callback, done_callback,
|
||||
table3_path: str = ""):
|
||||
"""Выполняется в отдельном потоке."""
|
||||
try:
|
||||
out = Path(output_dir)
|
||||
@@ -45,6 +46,15 @@ def run_processing(table1_path: str, table2_path: str, mif_dir: str,
|
||||
log_callback(f" Таблица 2: {len(t2_rows)} строк")
|
||||
log_callback(f" MIF-файлов: {len(mif_idx)}")
|
||||
|
||||
t3_images = {}
|
||||
t3_scales = {}
|
||||
if table3_path and Path(table3_path).is_file():
|
||||
try:
|
||||
t3_images, t3_scales = load_table3(table3_path)
|
||||
log_callback(f" Таблица 3 (схемы): {len(t3_images)} записей")
|
||||
except Exception as exc:
|
||||
log_callback(f" Предупреждение: Не удалось загрузить Таблицу 3: {exc}")
|
||||
|
||||
log_callback("\n[2/4] Генерация форм...")
|
||||
generated, errors = [], []
|
||||
total = sum(1 for r in t2_rows if r[0])
|
||||
@@ -58,9 +68,18 @@ def run_processing(table1_path: str, table2_path: str, mif_dir: str,
|
||||
out_path = out / filename
|
||||
log_callback(f" [{len(generated)+len(errors)+1}/{total}] {filename} ...", end="")
|
||||
try:
|
||||
fill_form(template_path, str(out_path), ki, t2_row, mif_idx)
|
||||
scheme_png = t3_images.get(str(zu_file).strip())
|
||||
oks_file_name = str(t2_row[10]).strip() if len(t2_row) > 10 and t2_row[10] else ""
|
||||
oks_scheme_png = t3_images.get(oks_file_name) if oks_file_name else None
|
||||
zu_scale = t3_scales.get(str(zu_file).strip())
|
||||
oks_scale = t3_scales.get(oks_file_name) if oks_file_name else None
|
||||
loc_zu = str(t2_row[4]).strip() if len(t2_row) > 4 and t2_row[4] else ""
|
||||
fill_form(template_path, str(out_path), ki, t2_row, mif_idx,
|
||||
zu_scheme=scheme_png, oks_scheme=oks_scheme_png,
|
||||
zu_scale=zu_scale, oks_scale=oks_scale)
|
||||
generated.append({"name": filename, "path": str(out_path),
|
||||
"kv": str(kv), "zu_file": str(zu_file)})
|
||||
"kv": str(kv), "zu_file": str(zu_file),
|
||||
"loc_zu": loc_zu})
|
||||
log_callback(" OK")
|
||||
except Exception as exc:
|
||||
log_callback(f" ОШИБКА: {exc}")
|
||||
@@ -116,15 +135,17 @@ class App(tk.Tk):
|
||||
|
||||
self.var_t1 = self._add_field(card, "Таблица 1 (КИ):", "xlsx", 0)
|
||||
self.var_t2 = self._add_field(card, "Таблица 2 (данные):", "xlsx", 1)
|
||||
self.var_mif = self._add_field(card, "Папка MIF:", "dir", 2)
|
||||
self.var_template = self._add_field(card, "Шаблон XLSX:", "xlsx", 3)
|
||||
self.var_output = self._add_field(card, "Папка вывода:", "dir", 4)
|
||||
self.var_t3 = self._add_field(card, "Таблица 3 (схемы):", "xlsx", 2)
|
||||
self.var_mif = self._add_field(card, "Папка MIF:", "dir", 3)
|
||||
self.var_template = self._add_field(card, "Шаблон XLSX:", "xlsx", 4)
|
||||
self.var_output = self._add_field(card, "Папка вывода:", "dir", 5)
|
||||
|
||||
# Дефолты
|
||||
base = Path(__file__).parent
|
||||
data = base / "data" / "Исх.данные"
|
||||
self.var_t1.set(str(data / "Таблица1 КИ-Неустроева.xlsx"))
|
||||
self.var_t2.set(str(data / "Таблица 2 Перечень выявленных исх.данные.xlsx"))
|
||||
self.var_t3.set(str(data / "Таблица 3 ( для схем).xlsx"))
|
||||
self.var_mif.set(str(data / "1. 74 34 0400007 ГК вымпел-73"))
|
||||
self.var_template.set(str(base / "data" / "ШАБЛОН ВЫЯВЛЕННЫЕ-1.xlsx"))
|
||||
self.var_output.set(str(base / "output"))
|
||||
@@ -188,9 +209,10 @@ class App(tk.Tk):
|
||||
# ── Запуск ──────────────────────────────────────────────────────────── #
|
||||
|
||||
def _start(self):
|
||||
t1 = self.var_t1.get().strip()
|
||||
t2 = self.var_t2.get().strip()
|
||||
mif = self.var_mif.get().strip()
|
||||
t1 = self.var_t1.get().strip()
|
||||
t2 = self.var_t2.get().strip()
|
||||
t3 = self.var_t3.get().strip()
|
||||
mif = self.var_mif.get().strip()
|
||||
tmpl = self.var_template.get().strip()
|
||||
out = self.var_output.get().strip()
|
||||
|
||||
@@ -211,6 +233,7 @@ class App(tk.Tk):
|
||||
self._log_append,
|
||||
lambda v: self.after(0, self._set_progress, v, None),
|
||||
self._on_done),
|
||||
kwargs={"table3_path": t3},
|
||||
daemon=True,
|
||||
)
|
||||
thread.start()
|
||||
@@ -264,6 +287,7 @@ class App(tk.Tk):
|
||||
Поля ввода:
|
||||
• Таблица 1 — файл xlsx с данными кадастрового инженера
|
||||
• Таблица 2 — файл xlsx со списком выявленных объектов
|
||||
• Таблица 3 — файл xlsx со схемами (необязательно)
|
||||
• Папка MIF — папка с MIF-файлами контуров (*.mif)
|
||||
• Шаблон — файл шаблона XLSX
|
||||
• Папка вывода — куда сохранять результаты
|
||||
|
||||
Reference in New Issue
Block a user