Скачиваний:
4
Добавлен:
29.03.2025
Размер:
1.25 Mб
Скачать

2.5.13. Процедура получения списка объектов, которые могут быть компонентами данного объекта (продукции):

функция: find_existing_acceptable_components_by_object - получение списка объектов, которые могут быть компонентами данного объекта (продукции)

-- 1. object_id - id объекта для продукции

-- выход: список компонентов объектов, которые могут быть для данного объекта

-- эффекты:

-- нет.

-- требования:

-- 1. передаваемое id продукции должно существовать

def find_existing_acceptable_components_by_object(object_id):

try:

cursor.execute("SELECT id_category FROM product WHERE id = ?", (object_id,))

id_category = cursor.fetchone()[0]

# Find the class_id of the object

cursor.execute("SELECT id_parent FROM terminal_classifier WHERE id = ?", (id_category,))

class_info = cursor.fetchone()

if not class_info:

return []

class_id = class_info[0]

cursor.execute('''

SELECT component_id FROM acceptable_components WHERE class_id = ?

''', (class_id,))

components = cursor.fetchall()

# Fetch component names for the result

result = []

for component in components:

component_id = component[0]

cursor.execute("SELECT terminal_classifier_name FROM terminal_classifier WHERE id = ?", (component_id,))

name = cursor.fetchone()

if name:

result.append((component_id, name[0]))

print(f'result - {result}')

return result

except Exception as e:

print(f"Error occurred while finding existing acceptable components: {e}")

return []

2.5.14. Процедура рекурсивного получения списка объектов, которые могут быть компонентами нижнего уровня данного объекта (продукции):

функция: find_existing_acceptable_components_by_object_recursive - получение списка объектов, которые могут быть компонентами данного объекта (продукции) рекурсивно

-- 1. object_id - id объекта для продукции

-- выход: список компонентов объектов, которые могут быть для данного объекта рекурсивно

-- эффекты:

-- нет.

-- требования:

-- 1. передаваемое id продукции должно существовать

def find_existing_acceptable_components_by_object_recursive(obj_id):

cursor.execute("SELECT id_category FROM product WHERE id = ?", (obj_id,))

cl_id = cursor.fetchone()

if not cl_id:

return []

cl_id = cl_id[0]

def find_components(cl_id):

components = []

acceptable_components = find_acceptable_components_by_class_recursive(cl_id)

for component in acceptable_components:

component_id = component[0]

cursor.execute("SELECT id, product_name FROM product WHERE id_category = ?", (component_id,))

obj_data = cursor.fetchone()

if obj_data:

components.append({

'component_id': obj_data[0],

'component_name': obj_data[1]

})

return components

components = find_components(cl_id)

return components

Соседние файлы в папке 1