
- •Задание на работу
- •0.1. Функциональные требования
- •0.2. Содержание работы
- •1. Разработка функциональных требований к подсистеме
- •2. Разработка проектной модели классов
- •3. Разработка модели хранения
- •4. Разработка физической модели данных и поддерживающих процедур
- •4.1 Процедура, создающая запись в таблице «orders»:
- •4.2 Процедура, добавляющая позицию заказа:
- •4.3 Процедура, изменяющая тип конфигурируемости объекта-изделия:
- •4.4 Процедура, изменяющая конфигурируемость параметра:
- •4.5 Процедура, возвращающая список конфигурируемых параметров данного объекта-изделия:
- •4.6 Процедура, возвращающая список нЕконфигурируемых параметров данного объекта-изделия:
- •4.7 Процедура, возвращающая список всех параметров данного объекта-изделия:
- •4.8 Процедура, возвращающая список вариантов исполнения для данного типового изделия с конфигуратором:
- •4.9 Процедура, создающая вариант исполнения по данному типовому изделию с конфигуратором:
- •4.10 Процедура, создающая типовое изделие с конфигуратором по данному типовому изделию без конфигуратора:
- •4.11 Процедура, выводящая сведения о деталях заказа:
- •4.12 Процедура, связывающая имеющийся параметр с продуктом:
- •4.13 Процедура, задающая значения параметра для продукции:
- •5. Тестирование процедур
4.6 Процедура, возвращающая список нЕконфигурируемых параметров данного объекта-изделия:
функция: find_obj_param_nonconfigurable - процедура, возвращающая список НЕконфигурируемых параметров данного объекта-изделия
-- вход:
-- 1. obj_id_val - id продукции
-- выход: id и названия всех параметров
-- эффекты:
-- 1. нет
-- требования:
-- 1. передаваемые аргументы должны существовать
def find_obj_param_nonconfigurable(obj_id_val: int):
try:
# Проверка существования продукции в таблице product
if not (is_exist_by_id_in_table(obj_id_val, PRODUCT_TABLE)):
raise ValueError(f'продукции с id={obj_id_val} нет в таблице product')
# Поиск id параметров, которые НЕ являются конфигурируемыми
cursor.execute("""
SELECT param_id
FROM prod_param
WHERE prod_id = ? AND is_configurable = 0
""", (obj_id_val,))
res_id = cursor.fetchall() # Список кортежей, например [(2,), (3,)]
# Если параметры не найдены
if not res_id:
print(f'НЕконфигурируемых параметров для продукции с id={obj_id_val} не найдено')
return 0
# Список для хранения имён параметров
res_nonconfigurable_params_names = []
# Перебор всех найденных параметров
for param_id_tuple in res_id:
param_id = param_id_tuple[0] # Достаём id из кортежа
cursor.execute("""
SELECT param_name
FROM param
WHERE id = ?
""", (param_id,))
param_name = cursor.fetchone()
if param_name:
res_nonconfigurable_params_names.append(param_name[0]) # Добавляем имя параметра
# Вывод результатов
print(f'\nid НЕконфигурируемых параметров для продукции с id={obj_id_val}: {[id[0] for id in res_id]}')
print(f'res_nonconfigurable_params_names - {res_nonconfigurable_params_names}\n')
# Возвращаем все id и названия параметров
return [[id[0] for id in res_id], res_nonconfigurable_params_names]
except (sqlite3.Error, ValueError) as e:
print(f"Ошибка в find_obj_param_nonconfigurable: {e}")
conn.rollback()
return 0
4.7 Процедура, возвращающая список всех параметров данного объекта-изделия:
функция: find_all_obj_params - процедура, возвращающая список всех параметров данного объекта-изделия
-- вход:
-- 1. obj_id_val - id продукции
-- выход: id и названия всех параметров
-- эффекты:
-- 1. нет
-- требования:
-- 1. передаваемые аргументы должны существовать
def find_all_obj_params(obj_id_val: int):
try:
if not (is_exist_by_id_in_table(obj_id_val, PRODUCT_TABLE)):
raise ValueError(f'продукции с id={obj_id_val} нет в таблице product')
res_configurable = []
res_nonconfigurable = []
# конфигурируемые:
res_of_func_configurable = find_obj_param_configurable(obj_id_val)
param_ids_configurable=[]
param_names_configurable=[]
# НЕконфигурируемые:
res_of_func_nonconfigurable = find_obj_param_nonconfigurable(obj_id_val)
param_ids_nonconfigurable=[]
param_names_nonconfigurable=[]
if (res_of_func_configurable):
param_ids_configurable = [res_of_func_configurable[0]]
param_names_configurable = res_of_func_configurable[1]
for i in range(len(param_ids_configurable)):
res_configurable.append([param_ids_configurable[i], param_names_configurable[i]])
if (res_of_func_nonconfigurable):
param_ids_nonconfigurable = [res_of_func_nonconfigurable[0]]
param_names_nonconfigurable = res_of_func_nonconfigurable[1]
for i in range(len(param_ids_nonconfigurable)):
res_nonconfigurable.append([param_ids_nonconfigurable[i], param_names_nonconfigurable[i]])
print(f'\n\n\n')
print(f'НЕконфигурируемые параметры: {res_nonconfigurable}')
print(f'конфигурируемые параметры: {res_configurable}')
return [[param_ids_configurable, param_names_configurable], [param_ids_nonconfigurable, param_names_nonconfigurable]]
except (sqlite3.Error, ValueError) as e:
print(f"Ошибка в find_all_obj_params: {e}")
conn.rollback()
return 0