
- •Задание на работу
- •1.1. Разработать проект каркаса для работы со спецификациями изделий
- •1.2. Содержание работы
- •Аннотация
- •Введение
- •2. Описание выполненной работы
- •2.1. Разработка функциональных требований к подсистеме
- •2.2. Разработка проектной модели классов
- •2.4. Разработка модели хранения
- •2.5. Разработка поддерживающих процедур
- •2.5.1. Процедура, создающая запись в таблице «acceptable_components»:
- •2.5.2. Процедура, создающая запись в таблице «prod_position_union»:
- •2.5.3. Процедура, удаляющая запись в таблице «prod_position_union»:
- •2.5.4. Процедура, удаляющая запись в таблице «acceptable_components»:
- •2.5.5. Процедура, меняющая количество в таблице «prod_position_union»:
- •2.5.6. Процедура наследование допустимых составов в таблице «acceptable_components»:
- •2.5.7. Процедура получения списка допустимых компонентов для данного класса из таблицы «acceptable_components»:
- •2.5.8. Процедура рекурсивного получения списка допустимых компонентов нижнего уровня для данного класса из таблицы «acceptable_components»:
- •2.5.9. Процедура получения списка компонентов для данного объекта (продукции) из таблицы «prod_position_union»:
- •2.5.10. Процедура рекурсивного получения списка компонентов нижнего уровня для данного объекта (продукции) из таблицы «prod_position_union»:
- •2.5.11. Процедура получения списка компонентов определенного класса для данного объекта (продукции) из таблицы «prod_position_union»:
- •2.5.12. Процедура рекурсивного получения списка компонентов нижнего уровня и определенного класса для данного объекта (изделия) из таблицы «prod_position_unioin»:
- •2.5.13. Процедура получения списка объектов, которые могут быть компонентами данного объекта (продукции):
- •2.5.14. Процедура рекурсивного получения списка объектов, которые могут быть компонентами нижнего уровня данного объекта (продукции):
- •2.6. Тестирование процедур
- •2.6.1. Тестирование процедуры, создающей запись в таблице «acceptable_components»:
- •2.6.2. Тестирование процедуры, создающей запись в таблице «prod_position_union»:
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