|
Планирование производственного процесса ООО “Промопост”
|
Заказчик: |
ООО “Промопост”, член OTTO Group Россия
|
Тип проекта: |
Внутренний корпоративный проект для Департамента производства |
Моя позиция в проекте: |
Архитектор баз данных
Разработчик
|
Операционные системы: |
Windows, Linux |
Базы данных: |
mySQL, Oracle 11G |
Языки: |
C#, PHP, SQL |
Технологии: |
Silverlight, Oracle Apache Server |
Среды разработки: |
MS Visual Studio, mySQL Workbench |
Язык интерфейса: |
Русский |
|
Мое участие в проекте происходило с июня 2011 года по март 2012 года.
У проекта была длинная и неудачная история, до момента моего участия в нем он длился уже около двух лет. Была предпринята попытка реализовать его на клиенской части в броузере с помощью компонентов ExtJS, насколько успешно, мне трудно судить. К сожалению, не завершив проект, уволилась программист и все остановилось. Я решил не продолжать работу с ExtJS, а переписать все с нуля.
|
Краткие сведения о проекте:
Поддержка расчетов загрузки для нескольких технологий сборки
Планирование в рамках месяца загрузки линий сборки
Поддержка неограниченного количества бизнес-юнитов (фирм)
Оперативное планирование загрузки линий на несколько дней вперед
Хранение актуальной информации о производственных процессах в реальном режиме времени
Импорт данных из CRM-системы компании
Формирование отчетов в MS Reporting Services (SSRS)
Уважаемые господа, все копии экрана, которые вы видите на этой странице относятся к тестовой версии проекта.
|
На серверной части интерфейс броузера (Silverlight) обслуживался с помощью PHP-модулей, которые формировали XML-пакеты, эти пакеты на стороне Silverlight обрабатывались с помощью технологии LINQ и превращались в наборы данных (LISTs). Но чась проекта, в которой использовались SSRS-отчеты была очень сложна, поэтому данные для отчетов формировались с помощью процедур mySQL, которые собирали запросы динамически.
|
Пользовательский интерфейс проекта
|
|
|
Проект состоял из нескольких частей. Одной из важных задач был сбор информации о планируемых объемах работ. Единицей работы являлся батч. Часть работ формировалось в CRM-системе компании, другая часть планировалось вручную. Проект имел интерфейс для добавления и корректировки батчей.
Из этого интерфейса можно было в любое время загрузить новые батчи из CRM-системы. Импорт выполнялся на стороне веб-сервера из PHP-модуля. При этом производилось подключение к базе данных Oracle, запрашивались данные из Oracle views и результаты помещались в базу данных проекта (mySQL).
|
|
|
Важной частью системы является распределение работ по подразделениям. Обычно в процесс сборки вовлечены несколько отделов компании. Все типы батчей унифицированы и для каждого из них прописан регламент выполнения работ и список подразделений, которые должны эти работы выполнять. Чтобы ускорить процесс планирования, батчам присваиваются шаблоны сборки (работа – департамент). Это позволяет сразу при добавлении батча распределить выполняемые работы по отделам компании в нужном порядке. При выборе шаблона происходит копирование данных в рабочие таблицы, если есть какие-либо работы не предусмотренные в шаблоне, то в интерфейсе батчей можно добавить, удалить или откорректировать нужные пункты.
|
|
|
Почти все сущности проекта за исключением алгоритмов сборки настраиваются через словарь системы. Это касается списков линий, бизнес-юнитов, шаблонов выполнения и т.д. |
|
|
|
Расчет трудоемкости сборки батчей основывается на нормативах, которые также настраиваются для каждой технологии. Технология подбирается при импорте или создании батчей, основываясь на названии батча (имеется словарь соответствий названий и технологий). |
|
|
|
Процесс работы с проектом начинается с планирования объемов производства на будущий месяц. Менеджер производственного отдела определяет линии, которые будут работать и бизнес-юниты, которые они будут обслуживать. В специальном интерфейсе проставляются выходные и праздничные дни. После этого производится заполнени матрицы планирования по каждому дню. В дальнейшем, при поступлении оперативной информации, матрица начинает корректироваться (колонки “Total” и “Missing” на первом рисунке). |
|
|
|
Основная часть проекта – интерфейс оперативного планирования. Он используется тогда, когда вся информация о батчах собрана. Менеджер производит расчет трудоемкости для каждого батча на основе технологии сборки и ее нормативов. Кроме этого планируются даты выполнения шагов батча. Для некоторых типов батчей менеджер может назначать операторов сборки.
В интерфейсе предусмотрен механизм корректировки реальных объемов выполненых работ, данные для этого запрашиваются в CRM-системе. |
|
Отчеты проекта (MS Reporting Services)
|
|
Для проекта мной было разработано несколько отчетов SSRS (Microsoft Reporting Services). Эта технология широко использовалась в компании и было решено не давать менеджерам доступ к проекту и не развивать там часть, связанную с отчетами, а разместить все необходимые отчеты на сервере SSRS.
Требования к отчетам были очень высоки, так как до запуска проекта планирование производственных процессов производилось вручную и основнымм отчетными документами были файлы MS Excel довольно сложной структуры, стояла задача реализовать документы проекта не потеряв существующей наглядности и функциональности. Отчеты настраивались из интерфейса проекта: выбирались нужные колонки, создавались дополнительные строки и т.д. На стороне отчета управление его элеменатми осуществлялось на основе Expressions для различных атрибутов. Основные RECORDSETS создавались для отчетов процедурами mySQL, так как обычными SQL-запросами обойтись было невозможно.
|
|
Все осложнялось тем, что для mySQL мне не удалось найти драйвер для OLE DB и стандартная передача параметров в SQL-запросы отчетов не работала. Использовался драйвер ODBC. После некоторых исследований проблему удалось решить, параметры можно было заменять вопросительными знаками (выделены на рисунке красным цветом), при этом было необходимо строго соблюдать их порядок, использование конструктора запросов было невозможно.
|
|
Для создания сложных документов я использовал комбинированные отчеты. Они имели изменяемую структуру и настраивались из интерфейса. Самым важным условием было получение документов в формате MS Excel (экспорт). Разбиение отчетов по вкладкам удалось достичь путем вставки разрывов страниц между отчетами и несколькими частями в отчете.
|
Оставьте комментарий:
|