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

2.5.5. Процедура, меняющая количество в таблице «prod_position_union»:

функция: edit_prod_position_union_quantity - изменение количества компонент у позиции в таблице prod_position_union

-- вход:

-- 1. obj_id - id объекта для экземпляра продукции

-- 2. comp_id - id объекта для компонента экземпляра продукции

-- 3. new_quantity - новое количество для компонентов

-- выход: 1 - успех / 0 - ошибка

-- эффекты:

-- 1. обновление количества компонент у записи в таблице prod_position_union

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

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

def edit_prod_position_union_quantity(obj_id, comp_id, new_quantity):

cursor.execute('''

UPDATE prod_position_union

SET quantity = ?

WHERE prod_id = ? AND comp_id = ?

''', (new_quantity, obj_id, comp_id))

updated_rows = cursor.rowcount

conn.commit()

print(f"значение позиции {(obj_id, comp_id)} установлено в {new_quantity}")

return 1 if updated_rows == 1 else 0

2.5.6. Процедура наследование допустимых составов в таблице «acceptable_components»:

функция: inherit_acceptable_components - наследоваение допустимых составов в таблице acceptable_components

-- вход:

-- 1. cl_id - id класса для которого произойдет наслеование допустимых составов класса продукции.

-- выход: количество насследованных параметров

-- эффекты:

-- 1. наследование допустимых составов в таблице acceptable_components для id переданного класса

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

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

def (cl_id):

inserted_count = 0

try:

cursor.execute('SELECT id_parent FROM terminal_classifier WHERE id = ?', (cl_id,))

parent_cl_id = cursor.fetchone()

if parent_cl_id is None:

raise ValueError("Parent class ID not found")

cursor.execute('''

SELECT component_id FROM acceptable_components

WHERE class_id = ?

''', (parent_cl_id[0],))

components = cursor.fetchall()

# Insert acceptable components for the child class

for (component_id,) in components:

cursor.execute('''

INSERT OR IGNORE INTO acceptable_components (class_id, component_id)

VALUES (?, ?)

''', (cl_id, component_id))

inserted_count += cursor.rowcount

conn.commit()

print(f'произведено {inserted_count} наследований')

except Exception as e:

print(f"Error: {e}")

return inserted_count

2.5.7. Процедура получения списка допустимых компонентов для данного класса из таблицы «acceptable_components»:

функция: find_acceptable_components_by_class - получение списка допустимых классов-компонентов для данного класса

-- вход:

-- 1. cl_id - id класса для продукции

-- выход: допустимые классы-компоненты

-- эффекты:

-- нет.

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

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

def find_acceptable_components_by_class(class_id):

try:

cursor.execute("SELECT component_id FROM acceptable_components WHERE class_id = ?", (class_id,))

component_ids = cursor.fetchall()

if not component_ids:

return []

# Prepare the result list with names of components

result = []

for component_id in component_ids:

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

name = cursor.fetchone()

if name:

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

print(f'для класса с id = {class_id}, составные части: {result}')

return result

except Exception as e:

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

return []

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