2.9 KiB
2.9 KiB
Парсер Сводки ПМ
Описание
Парсер для обработки сводок ПМ (план и факт) с поддержкой множественных геттеров. Наследуется от ParserPort и реализует архитектуру hexagonal architecture.
Доступные геттеры
1. get_single_og
Получение данных по одному ОГ из сводки ПМ.
Обязательные параметры:
id(str): ID ОГ (например, "SNPZ", "KNPZ")codes(list): Список кодов показателей (например, [78, 79, 81, 82])columns(list): Список столбцов для извлечения (например, ["ПП", "БП", "СЭБ"])
Необязательные параметры:
search(str): Значение для поиска в столбцах
Пример использования:
parser = SvodkaPMParser()
params = {
"id": "SNPZ",
"codes": [78, 79, 81, 82],
"columns": ["ПП", "БП", "СЭБ"]
}
result = parser.get_value("get_single_og", params)
2. get_total_ogs
Получение данных по всем ОГ из сводки ПМ.
Обязательные параметры:
codes(list): Список кодов показателейcolumns(list): Список столбцов для извлечения
Необязательные параметры:
search(str): Значение для поиска в столбцах
Пример использования:
parser = SvodkaPMParser()
params = {
"codes": [78, 79, 81, 82],
"columns": ["ПП", "БП", "СЭБ"]
}
result = parser.get_value("get_total_ogs", params)
Поддерживаемые столбцы
- ПП, БП: Данные из файлов плана
- ТБ, СЭБ, НЭБ: Данные из файлов факта
Структура файлов
Парсер ожидает следующую структуру файлов:
data/pm_fact/svodka_fact_pm_{OG_ID}.xlsxили.xlsmdata/pm_plan/svodka_plan_pm_{OG_ID}.xlsxили.xlsm
Где {OG_ID} - это ID ОГ (например, SNPZ, KNPZ и т.д.)
Формат результата
Результат возвращается в формате JSON со следующей структурой:
{
"ПП": {
"78": 123.45,
"79": 234.56
},
"БП": {
"78": 111.11,
"79": 222.22
},
"СЭБ": {
"78": 333.33,
"79": 444.44
}
}
Обработка ошибок
- Если файл плана/факта не найден, соответствующие столбцы будут пустыми
- Если код показателя не найден, возвращается 0
- Валидация параметров выполняется автоматически