Итак, немного о себе, производстве и программировании:

Моя профессия далека от IT технологий. Я работаю на производстве кажется всю жизнь довольно давно. Тематика - производство и ремонт металлообрабатывающих станков. Производим станки как новые, так и ремонтируем. Стараемся все делать локализировано (импортозамещение ж)- все железки точим, шлифуем, собираем и т.д

Вот такие ~~чудища~~ станки производим

Сейчас работаю механиком, совмещая несколько должностей конструктор/снабженец/технолог. Да, есть проблема кадров. А как решать? Надо автоматизировать!
В производстве много сложных процессов, не поддающихся автоматизации, но часть из организационных вопросов можно решить с ее помощью. Вот с ними я и хотел бы побороться.

Итак, 2022 год. Везде говорят про ИТ. Стало интересно. Решил попробовать с# - любопытно, но показалась сложно: ООП и прочее, хотя какой-то калькулятор на WinForms сделать все же получилось. Вкладывать в свое образование мне стало как то жалко - а вдруг не пойдет? А вдруг я тупой или старый? (30лет), так что в основном смотрел видео на YouTube и читал книжки. Как-то в каком-то видео услышал высказывание - "Чтобы научиться программировать, надо попробовать написать проект, который связан с вашей текущей работой". Звучало не плохо - почему бы и нет?

Что мы имеем: нулевой бюджет, почти нулевые знания, ноутбук и огромное желание автоматизировать рутинный процесс снабжения производства.

В голове это выглядело примерно так:

  • некий сайт, где лежат чертежи и все, что мы закупаем

  • с сайта можно сделать заказ: набираем в корзину подшипники и прочие детали , которые делают нам подрядные организации. Им высылается заявка с чертежами (если надо), количеством товара и реквизитами, куда они должны выставлять счета.

  • Так как контрагентов довольно много и деталей много хотелось бы, чтобы сайт (тогда я думал, что это делает какой-то мифический сайт и/или магия) сам подбирал нужного контрагента под конкретную деталь.

  • Хотелось, чтобы я всегда видел у кого что и когда заказано.

  • Хотелось, чтобы можно было посмотреть историю заказов - где, когда, у кого и в каком количестве заказывался товар.

  • Хотелось иметь удобную навигацию по чертежам (те, кто связаны с производством меня поймут - есть сборочный чертеж, в нем ссылка на номер детали из спецификации и потом только номер самой детали).

В начале пути цель казалась не достижима, но упертость победила.

Итак, я начал изучать по видео из YouTube HTML CSS и JS.

За пару месяцев (что меня удивило) я худо-бедно стал разбираться со стилями css. Мои страницы, которые я пытался верстать, пестрили вездесущими DIV, но что-то получалось. Все же я был еще далек от начала проекта.

И начать я его решил сразу с проекта на REACT - везде про него много говорили. Ну что, освоим!

Занимаясь проектом только по вечерам после работы и в обед, параллельно изучая REACT, ExressJS, mongo через пол года у меня что-то начало вырисовываться.

Был создан сервер на Express, который общается с mongoDB через mongose. Сервер отдавал статику (чертежи), фактически просто картинки.

Также было приложение на REACT, где все чертежи можно было посмотреть, добавить в корзину и присвоить контрагента.

Контрагента так же можно было добавлять из приложения. Чтобы программа понимала и предлагала какому из контрагентов отправлять заявку, придумал систему выстрелил себе в ногу на основе регулярных выражений.

Запустил все в локальной сети и ... ОНО ЗАРАБОТАЛО!

Навигация по каталогам

И работает!
Воодушевленный таким успехом, я добавил несколько новых функций:

  • Отправка напоминания каждому контрагенту о сделанном заказе - все детали, которые я от них жду

  • Отслеживание длительность поставки запчастей для анализа и прогнозирования закупок

  • Создание для каждого контрагента google таблицы, где будут отражены его текущие, а так же завершенные заказы. Ссылка на таблицу приходит вместе с заявкой и ведется в реальном времени.

  • Установка приоритета на детали. Контрагенту приходит уведомление что, мол, эта железка очень нужна и помечается в таблице красным цветом с пометкой "СРОЧНО".

  • Добавление прайсов от контрагентов.

    • Получилось красиво. Контрагенты присылают свой прайс в таблице Excel, я добавляю его в программу. Она подбирает на основе регулярных выражений (опять выстрел в ногу) чертеж к деталям (если они есть в каталоге) и растасовывает их по группам и подгруппам.

  • Telegramm-бот, уведомляющий о новых заказах или об их поступлении. В чате состоит руководство, которое тоже видит что, когда и у кого было заказано.

  • Получение информации из прайса через Telegramm-бот: пишешь номер детали и он выдает цены из прайса по всем контрагентам, которые могут эту делать поставить, а также средний срок поставки(я же отслеживаю сроки).

Исполнителей пришлось закрасить для статьи (мало ли что) паранойя

Следующим шагом стало управление производством.

Бизнес процесс довольно прост - приходит станок в ремонт, на него приходит договор со сроками, ЗИП (запасными частями), цветом станка характеристиками и прочее. За этим станком закрепляется бригада рабочих которые этот станок собирают.

К этому времени это приложение работает через локальную сеть на всех компьютерах на производстве.

Для автоматизации нашего бизнес процесса были реализованы следующие возможности:

  • Добавление сотрудников

  • Размещение на виртуальном поле станков

  • Назначение сотрудников для процесса сборки

  • Автоматическое заполнение полей контракта при прикреплении договора. Программа вытаскивает нужные поля типа сроков сдачи, ЗИП, цвета, характеристик будущего оборудования и заполняет их.

  • Чат с еще одним ботом. Он размещает статусы изготовления станка и информацию о назначениях на сборку для любого сотрудника, сделавшего запрос.

    • Позже научил бота высылать чертежи по запросу(мало ли кому из сотрудников нужен)

  • Электронный табель посещения работы для сотрудников

  • Отслеживание дней рождения

  • Хранение истории выполненных контрактов. Можно посмотреть детально предмет контракта, контрагента, дату, а также кто из сотрудников собирал оборудование, чтобы если что наказать поощрить.

Соотношение виртуальной сборки и реальной.

Параллельно с этим создал интеграцию с "Деловыми линиями" - теперь из приложения можно отслеживать грузы, которые идут к нам.

Слева направо - текущие станки, (если красные, значит н̶а̶д̶о̶ ̶п̶о̶т̶о̶р̶о̶п̶и̶т̶ь̶с̶я̶,̶ ̶и̶н̶а̶ч̶е̶ ̶о̶т̶л̶у̶п̶я̶т̶ подходят сроки сдачи), последние, полученные запчасти.

И немного о стеке:
front - REACT / REACT-ROUTER / REDUX / REDUX-THUNK / REACT-KONVA
server - EXPRESS /mongoDB+mongose / momentJS / Winston / uniqid / pdf-parse

Подытожим:

Да, автоматизация много что может, много вопросов можно ей закрыть и даже нехватку кадров.

Сейчас активно изучаю IT технологии и готовлю еще одно решение для соседнего производства под ключ, с полноценной разверткой, масштабируемое красивое и быстрое (PWA.desktop) ... правда с таким же бюджетом.

Если вдруг статейка оказалась для Вас интересна, расскажу как программа устроена под капотом, но это уже совсем другая история...

Всех благ! Успехов в автоматизации!