- •Задание на работу
- •Аннотация
- •Summary
- •Описание выполненной работы
- •2.1 Маршрутная технология и маршрутные карты
- •2.2 Разработка функциональных требований к подсистеме
- •2.3 Разработка модели классов этапа анализа
- •2.4 Разработка модели классов этапа проектирования
- •2.5 Разработка модели хранения
- •2.6 Создание базы данных
- •2.7 Разработка основных процедур
- •2.7.1 Процедура, создающая запись в таблице “prod_operation”:
- •2.7.2 Процедура, создающая запись в таблице “input_resources”
- •2.7.3 Процедура удаления записи о операции в таблице “prod_operation”
- •2.7.4 Процедура, создающая запись о схд в таблице “terminal_classifier”
- •2.7.5 Процедура, создающая грц класс в таблице terminal_classifier
- •2.7.6 Процедура создания экземпляра грц
- •2.7.7 Процедура, меняющая порядок операции, позволяя вставлять ее в начало, середину, конец тм
- •2.7.8 Процедура удаления записи в таблице “input_resources”
- •2.7.9 Процедура изменения количества ресурса в таблице “inputs_resources”
- •2.7.10 Процедура нахождения информации об операции по id
- •2.7.11 Процедура поиска tm, сортируя их по приоритету (порядок формируется приоритетом операции при ее создании / вставке в началу/середину/конец)
- •2.7.12 Поиск затрат ресурсов на тм на партию объектов
- •2.7.13 Поиск затрат ресурсов на одну операцию для партии изделий
2.7.11 Процедура поиска tm, сортируя их по приоритету (порядок формируется приоритетом операции при ее создании / вставке в началу/середину/конец)
функция: find_obj_operation_by_object - получение подробной информации о ТМ по id продукции
-- вход:
-- 1. prod_id - id продукции
-- выход: получение подробной информации о ТМ по id продукции
-- эффекты:
-- нет
-- требования:
-- 1. передаваемые id должно существовать
def find_obj_operation_by_object(prod_id):
cursor.execute("SELECT id FROM prod_operation WHERE prod_id = ?", (prod_id,))
operations_IDs_raw = cursor.fetchall()
operations_IDs = []
for oper in operations_IDs_raw:
operations_IDs.append(oper[0])
operations_total_info = []
for iter in operations_IDs:
operations_total_info.append(find_obj_operation(iter))
sorted_operations = sorted(operations_total_info, key=lambda x: x[-1])
return sorted_operations
2.7.12 Поиск затрат ресурсов на тм на партию объектов
функция: find_input_resources_by_obj_operation_with_batch - рассчет ресурсов для ТМ для партии продукции
-- вход:
-- 1. prod_id - id продукции.
-- 2. batch_size - размер партии.
-- выход: ресурсы
-- эффекты:
-- нет
-- требования:
-- 1. передаваемые аргументы должны существовать
def find_input_resources_by_obj_operation_with_batch(prod_id, batch_size):
try:
# Проверка существования продукта
cursor.execute("SELECT COUNT(*) FROM product WHERE id = ?", (prod_id,))
if cursor.fetchone()[0] == 0:
print(f"Product with ID {prod_id} does not exist")
return
# Получение операций для продукта
cursor.execute("""
SELECT id_operation_type, operation_name, time_per_obj
FROM prod_operation
WHERE prod_id = ?
""", (prod_id,))
operations = cursor.fetchall()
if not operations:
print(f"No operations found for product with ID {prod_id}")
return
# Подготовка для подсчета затрат ресурсов
total_resources = {}
total_time = 0.0
for id_operation_type, operation_name, time_per_obj in operations:
# Учет временных затрат
if time_per_obj:
total_time += time_per_obj
# Получение ресурсов для текущей операции
cursor.execute("""
SELECT resource_name, unit_id, quantity
FROM input_resources
WHERE operation_id = ? AND prod_id = ?
""", (id_operation_type, prod_id))
resources = cursor.fetchall()
# Суммирование ресурсов
for resource_name, unit_id, quantity in resources:
resource_key = (resource_name, unit_id)
total_resources[resource_key] = total_resources.get(resource_key, 0) + (quantity or 0)
# Масштабирование результатов по размеру партии
total_resources = {key: value * batch_size for key, value in total_resources.items()}
total_time *= batch_size
# Вывод результатов
print(f"Total resources required for product {prod_id} with batch size {batch_size}:")
for (resource_name, unit_id), total_quantity in total_resources.items():
print(f"Resource: {resource_name}, Unit ID: {unit_id}, Total Quantity: {total_quantity}")
print(f"Total time required: {total_time:.2f} hours\n\n")
# Возвращение результатов
return total_resources, total_time
except Exception as e:
print(f"Error in find_input_resources_by_obj_operation_with_batch: {e}")
return None
