This commit is contained in:
2025-08-12 23:53:44 +05:00
parent a882a81180
commit 6af7d54070
13 changed files with 462 additions and 431 deletions

30
main.py
View File

@@ -89,19 +89,14 @@ def Pars():
messagebox.showwarning("Предупреждение", "Кадастровые номера не найдены в XML файлах")
return
# 4. Создаем карту номер -> файл для быстрого поиска
# 4. Создаем карту номер -> файл для быстрого поиска (для обратной совместимости)
cadastral_to_file_map = {}
file_to_numbers_map = {} # файл -> множество номеров для поиска смежных
for record in records:
# Для основной карты берем первое вхождение номера
if record.number not in cadastral_to_file_map:
cadastral_to_file_map[record.number] = record.file_path
# Для карты файл->номера добавляем все номера из каждого файла
if record.file_path not in file_to_numbers_map:
file_to_numbers_map[record.file_path] = set()
file_to_numbers_map[record.file_path].add(record.number)
# Добавляем все номера из объекта в карту
for number in record.all_numbers:
if number not in cadastral_to_file_map: # Берем первый найденный файл
cadastral_to_file_map[number] = record.file_path
# 5. Обработка Excel файла и организация файлов
excel_updated = False
@@ -115,13 +110,14 @@ def Pars():
excel_numbers = excel_processor.get_cadastral_numbers()
# Находим пересечения между Excel и найденными номерами
found_numbers = set(cadastral_to_file_map.keys())
matching_numbers = excel_numbers.intersection(found_numbers)
# Теперь ищем по всем номерам в объектах, не только по основным
all_found_numbers = seeker.get_all_cadastral_numbers()
matching_numbers = excel_numbers.intersection(all_found_numbers)
if matching_numbers:
# Обновляем Excel файл информацией о найденных файлах
# Обновляем Excel файл информацией о найденных объектах
output_excel_path = str(output_directory / "updated_cadastral_list.xlsx")
excel_processor.update_excel_with_file_info(cadastral_to_file_map, output_excel_path)
excel_processor.update_excel_with_cadastral_records(records, output_excel_path)
excel_updated = True
# Копируем файлы с номерами из Excel в отдельную папку
@@ -221,8 +217,10 @@ def create_report(output_directory, stats, unique_numbers, moved_files, excel_up
f.write(f"Общая статистика:\n")
f.write(f"- Всего XML файлов найдено: {stats['total_xml_files']}\n")
f.write(f"- Файлов с кадастровыми номерами: {stats['files_with_numbers']}\n")
f.write(f"- Всего кадастровых номеров: {stats['total_cadastral_numbers']}\n")
f.write(f"- Уникальных номеров: {stats['unique_cadastral_numbers']}\n")
f.write(f"- Всего кадастровых объектов: {stats['total_cadastral_objects']}\n")
f.write(f"- Уникальных основных номеров: {stats['unique_main_numbers']}\n")
f.write(f"- Всего номеров во всех объектах: {stats['total_all_numbers']}\n")
f.write(f"- Всего уникальных номеров: {stats['unique_all_numbers']}\n")
f.write(f"- Файлов скопировано в 'all_xml_files': {len(moved_files)}\n")
if matching_files_count > 0: