This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
import re
|
||||
import logging
|
||||
from typing import Dict, List, Optional, Any
|
||||
from datetime import datetime
|
||||
from datetime import datetime, timedelta
|
||||
from dateutil import parser
|
||||
|
||||
# Импортируем наши модули
|
||||
@@ -172,8 +172,8 @@ class Synchronizer:
|
||||
|
||||
def _update_existing_frs(self):
|
||||
"""
|
||||
Находит и обновляет ФР с отличающимися датами окончания ФН,
|
||||
воспроизводя проверенную логику в более производительном виде.
|
||||
Находит и обновляет ФР с отличающимися датами окончания ФН.
|
||||
Пропускает обновление, если разница в датах более 10 лет.
|
||||
"""
|
||||
log.info("Поиск ФР для обновления...")
|
||||
|
||||
@@ -199,6 +199,9 @@ class Synchronizer:
|
||||
records_to_check = self.db._execute_query(query, fetch='all')
|
||||
update_counter = 0
|
||||
|
||||
#Порог для сравнения дат
|
||||
archive_delta = timedelta(days=365*10)
|
||||
|
||||
for rec in records_to_check:
|
||||
try:
|
||||
# 2. Приводим даты к одному "знаменателю" - объектам datetime
|
||||
@@ -214,12 +217,18 @@ class Synchronizer:
|
||||
# 3. Сравниваем даты. Если они различаются, готовим обновление.
|
||||
# Проверяем на неравенство. Величина различия не важна.
|
||||
if pos_date != sd_date:
|
||||
# Проверяем, что разница не больше 10 лет
|
||||
if abs(pos_date - sd_date) > archive_delta:
|
||||
log.warning(f"Пропуск сравнения для S/N {rec['serialNumber']}: разница в датах больше 10 лет."
|
||||
f"FTP: {pos_date.date()}, SD: {sd_date.date()}.")
|
||||
continue
|
||||
|
||||
log.info(f"Найдено расхождение в дате для S/N {rec['serialNumber']} (UUID: {rec['sd_uuid']}). "
|
||||
f"FTP: {pos_date}, SD: {sd_date}. Подготовка к обновлению.")
|
||||
|
||||
# 4. Формируем данные для обновления
|
||||
|
||||
# 5. Проверяем, закончился ли ФН
|
||||
# Проверяем, закончился ли ФН
|
||||
if rec['pos_rnm'] == '0000000000000000':
|
||||
legal_name = 'ЗАКОНЧИЛСЯ ФН'
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user