Файл: "Транспортная доставка заказов" Проектирование реализации операций бизнес-процесса.pdf
Добавлен: 16.05.2023
Просмотров: 404
Скачиваний: 2
СОДЕРЖАНИЕ
1.1 Бизнес-процессы компании до введения системы
1.1.1 Бизнес-процесс заказа и доставки ингредиентов на склад
1.1.3 Степень автоматизации БП на момент «до введения системы»
1.2 Обзор логистического блока ERP системы
1.2.1 1С:Предприятие 8. TMS Логистика. Управление перевозками
1.2.2 1С:Предприятие 8. Центр спутникового мониторинга ГЛОНАСС/GPS
2.2.2 Описание структуры данных
2.2.3 Использование структуры данных в ИС
База данных рассмотренная мной в данной работе является не полной, но лишь минимально необходимой для полноценной работы системы. В частности, тут не присутствует возможность хранения информации о местоположении курьеров в разные моменты времени и нет возможности использовать эту базу в качестве хранилища паролей для защиты приложения от неавторизованного доступа
2.2.1 Список таблиц базы:
- Table_Orders
- Table_Customers
- Table_Meals
- Table_Recipes
- Table_Measurments
- Table_Ingredients
- Table_Batches
- Table_Locations
- Table_Suppliers
- Table_Status
- Table_MealsList
- Table_Cars
- Table_Overseers
- Table_SuppliersIngredientsList
- Table_Drivers
Рисунок 7 Схема данных БД
2.2.2 Описание структуры данных
2.2.2.1 Table_Orders:
Эта таблица хранит в себе данные о заказах, сделанных клиентами, как об активных, так и о выполненных, в целях сбора статистики и построения модели потребности ресторана в ингредиентах.
Рисунок 8 Таблица заказов
Поля таблицы:
- Orders_ID – (integer)уникальный идентификатор заказа в системе, также является первичным ключом. Уникальное поле, которое не может повторяться. Является индексом
- Orders_Customer_ID – (integer)уникальный идентификатор пользователя, сделавшего заказ. Является внешним ключом (таблица: Table_Customers)
- Orders_Status – (boolean)поле, которое показывает статус заказа, принимает значения (0 – заказ не выполнен и 1 – заказ закрыт)
- Orders_ReceiveDate – (datetime) поле, которое хранит дату и время поступления заказа в систему
- Orders_CloseDate – (datetime) поле, хранящее информацию о дате и времени закрытия заказа
- Orders_Car_ID – (integer) внешний ключ таблицы Table_Car, указывающий машину, на которую был назначен (которая выполнила) заказ.
2.2.2.2 Table_MealsList:
В каждом заказе может быть несколько блюд, поэтому для их хранения в рамках одной записи заказа создаем отдельную таблицу.
Рисунок 9. Таблица списка блюд в заказе
Поля таблицы:
- MealsList_ID – (integer) уникальный идентификатор записи. Не может повторяться и является первичным ключом таблицы
- MealsList_Orders_ID – (integer) внешний ключ из таблицы Table_Orders. Показывает к какому заказу относятся блюда из списка
- MealsList_Meals_ID – (integer) внешний ключ из таблицы Table_Meals, показывающий идентификатор блюда, входящего в заказ
- MealsList_Status – (boolean) поле хранящее статус готовности блюда (0 – не готово, 1 – готово и можно отправлять)
2.2.2.3 Table_Customers:
Таблица содержит данные о заказчиках для сбора статистики, поиска постоянных клиентов и изучения клиентов и их предпочтений.
Рисунок 10. Таблица клиентов
Поля таблицы :
- Customers_ID – (integer) уникальный идентификатор покупателя, являющийся первичным ключом и индексом таблицы
- Customers_Name – (varchar) ФИО покупателя
- Customers_Age – (integer) возраст покупателя, используется для составления статистики предподчтений
- Customers_OrdersCount – (integer) количество заказов, сделанных покупателем. Собирается для статистики.
2.2.2.4 Table_Meals:
В этой таблице хранится информация о блюдах, которые ресторан готовит и доставляем своим клиентам.
Рисунок 11. Таблица блюд
Поля таблицы:
- Meals_ID – (integer) уникальный идентификатор записи. Является первичным ключом таблицы, а так же индексом для ускорения поиска блюда под ID
- Meals_Recipes_ID – (integer) внешний ключ таблицы Table_Recipes, который устанавливает связь между блюдом и его рецептом
- Meals_Name – (varchar) название блюда
- Meals_Cooking – (memo) поле, хранящее в себе последовательность действий при приготовлении блюда
- Meals_Expiration – (integer) срок годности блюда после его приготовления
2.2.2.5 Table_Recipes:
Эта таблица хранит в себе все ингредиенты с помощью которых готовится блюдо, а так же необходимое для приготовления количество каждого ингредиента в разных единицах измерений
Рисунок 12. Таблица рецептов
Поля таблицы:
- Recipes_ID – (integer) является уникальным идентификатором каждой строки. Так же является индексом
- Recipes_Ingredients_ID – (integer) внешний ключ, являющийся первичным ключом таблицы Table_Ingredients. Используется для привязки ID каждого ингредиента к рецепту
- Recipes_Quantity – (float) поле, описывающее необходимое количество ингредиента для приготовления блюда
2.2.2.6 Table_Measurment
Таблица хранит в себе данные о единицах измерения, используемых в приложении.
Рисунок 13. Таблица мер измерения
Поля таблицы:
- Measurment_ID – (integer) поле, являющееся первичным ключом таблицы, а так же её индексом.
- Measurment_Name – (varchar) название единицы измерения, применяемое в программе
- Measurment_Short – (varchar) – сокращение названия единицы измерения, для применения вместе с цифрами
2.2.2.7 Table_Ingredients
Таблица содержит данные об ингредиентах, их принятом в системе названии и сроке годности.
Рисунок 14. Таблица ингредиентов
Поля таблицы:
- Ingredients_ID – (integer) уникальный идентификатор рецепта, так же являющийся первичным ключом и индексом для ускорения поиска по ингредиентам
- Ingredients_Name – (varchar) название ингредиента, используемое информационной системой.
- Ingredients_Expiration – (integer) число дней, в течение которых ингредиент можно использовать
- Ingredients_Measurment_ID – (integer) внешний ключ, привязывающий к каждому ингредиенту подходящие меры измерения. Является внешним ключом
2.2.2.8 Table_Batches
Таблицы хранит в себе данные о партиях ингредиентов, поставленных поставщиками, их сроке годности и наличии на складе.
Рисунок 15. Таблица заказов на ингредиенты
Поля таблицы:
- Batches_ID – (integer) уникальный идентификатор поставки, являющийся первичным ключом таблицы, а так же индексом, созданным для ускорения поиска партии по ID
- Batches_Suppliers_ID – (integer) внешний ключ, связывающий Table_Batches с Table_Suppliers. Указывает ID поставщика, поставившего компании партию ингредиентов.
- Batches_Ingredients_ID – (integer) внешний ключ, связывающий таблицы по ID ингредиента, определяет тип ингредиента, содержащийся в данной поставке
- Batches_DeliveryDate/OrderDate – (datetime) время и дата доставки данной партии ингредиентов на склад или заказа партии, через систему у поставщика.
- Batches_Quantity – (integer) количество ингредиентов, поставленных в рамках данной партии
- Batches_Status_ID – (integer) внешний ключ, устанавливающий связь между таблицами Table_Batches и Table_Status. Указывает статус партии в системе (0 – заказана, но не доставлена, 1 – доставлена на склад, 2- партия закончилась, 3- у партии истек срок годности)
2.2.2.9 Table_Locations:
Таблица содержит данные о местонахождении клиентов, для более быстрой доставки блюд по адресу постоянным покупателям.
Рисунок 16. Таблица местоположений клиентов
Поля таблицы:
- Locations_ID – (integer) уникальный идентификатор строки. Является также первичным ключом таблицы.
- Locations_Customer_ID – (integer) внешний ключ, связывающий Table_Locations с Table_Customers. Предназначен для создания связи между покупателем и его домашним адресом
- Locations_Latitude – (integer) широта точки местонахождения клиента, для визуализации через Google Maps.
- Locations_Longitude – (integer) долгота точки местонахождения клиента, для визуализации через Google Maps.
2.2.2.10 Table_Suppliers:
Таблица предназначена для хранения информации о поставщиках ингредиентов для ресторана.
Рисунок 17. Таблица поставщиков
Поля таблицы:
- Suppliers_ID – (integer) уникальный идентификатор каждого поставщика в системе. Является первичным ключом, а так же индексом.
- Suppliers_Name – (varchar) название поставщика, используемое внутри системы.
- Suppliers_BatchesCount – (integer) количество заказов на ингредиенты, выполненных поставщиком
2.2.2.11 Table_Status:
Таблица хранит в себе данные о статусе партий ингредиентов, внесенных в систему.
Рисунок 18. Таблица статусов заказов
Поля таблицы:
- Status_ID – (integer) уникальный идентификатор статуса, являющийся так же первичным ключом.
- Status_Name – (varchar) название статуса, принятое в рамках данной системы.
2.2.2.12 Table_SuppliersIngredientsList:
Таблица содержит в себе данные о списке ингредиентов, которые можно заказать у каждого поставщика
Рисунок 19. Таблица ингредиентов, поставляемых разными поставщиками
Поля таблицы:
- SuppliersIngredientsList_ID – (integer) уникальный идентификатор каждой записи в таблице. Является первичным ключом в таблице и индексом.
- SuppliersIngredientsList_Suppliers_ID – (integer) внешний ключ, связанный с таблицей Table_Suppliers, показывает какой поставщик поставляет данный ингредиент
- SuppliersIngredientList_Ingredients_ID – (integer) внешний ключ, связывающий данную таблицу с таблицей Table_Ingredients, указывает какой ингредиент поставляет данный поставщик
2.2.2.13 Table_Cars:
Таблица содержит в себе данные о машинах, используемых компанией для доставки.
Рисунок 20. Таблица машин компании
Поля таблицы:
- Cars_ID – (integer) уникальный идентификатор машины, используемый в системе. Является первичным ключом и индексом.
- Cars_Drivers_ID – (integer) ID водителя данной машины. Является внешним ключом, связывающим данную таблицу с таблицей Table_Drivers.
- Cars_Model – (varchar) модель машины
- Cars_YearFrom – (datetime) год покупки машины
- Cars_Distance – (integer) пробег машины за время работы в компании по доставке.
- Cars_NumberOfRepairs - (integer) число ремонтов данной машины
- Cars_Overseers_ID – (integer) каждая машина привязана к определенному диспетчеру. Поле является внешним ключом для связи с таблицей Table_Overseers
2.2.2.14 Table_Overseers:
Таблица будет содержать в себе данные о диспетчерах, контролирующих поток заказов и назначающих их на машины.
Рисунок 21. Таблица диспетчеров
Поля таблицы:
- Overseers_ID – (integer) уникальный идентификатор диспетчера в системе. Является первичным ключом и индексом БД
- Overseers_Name – (varchar) ФИО диспетчера
- Overseer_Age – (integer) возраст диспетчера
- Overseers_WorkingFrom – (datetime) дата приема диспетчера на работу
- Overseers_OrdersCount – (integer) число заказов, обработанных данным диспетчером
2.2.2.15 Table_Drivers:
Таблица содержит в себе данные о водителях, нанятых на работу в ресторан.
Рисунок 22. Таблица водителей
Поля таблицы:
- Drivers_ID – (integer) уникальный идентификатор водителя в системе. Является первичным ключом.
- Drivers_Name – (varchar) ФИО водителя
- Drivers_Age – (integer) возраст водителя
- Drivers_Experience – (integer) водительский стаж
- Drivers_WorkingFrom – (datetime) дата приема водителя на работу
- Drivers_OrdersCount – (integer) количество заказов, выполненных водителем
2.2.3 Использование структуры данных в ИС
Приведенная выше структура данных хранит в себе всю необходимую информацию для корректной работы системы по всем аспектам доставки. Система предназначена для постоянного обновления списков заказов и поставок (Tables_Batches, Table_Orders), на основе которых и выполняется главная часть обоих БП. Остальные таблицы хранят вспомогательную информацию (имена диспетчеров и водителей, рецепты), которая имеет не меньшую важность, но обновляется намного реже двух главных таблиц.
В основном система будет работать именно с Table_Orders и Table_Batches, т.к. они хранят в себе большую часть необходимой для выполнения заказа информации, остальные будут использоваться лишь при необходимости. Это означает, что большая часть функционала будет оптимизирована для работы с двумя главными таблицами.
Реализация проекта. Схема взаимодействия форм в приложении
В данном параграфе приведена часть описания выполнения одного из наиболее важных процессов ресторана – транспортировки заказав, а именно получения и назначения заказов на машину. Всего в приложении сервера задействовано 8 форм, как показано на рисунке 23.