Система автоматизации планирования загрузки и разгрузки трюмов для рыбопромышленной компании

Клиент
Русская Рыбопромышленная Компания (РРПК)
Сфера
Рыбопромышленность
Задача

«Русская Рыбопромышленная Компания» — один из лидеров по добыче минтая в России и мире, один из ведущих российских производителей дикой белой рыбы.

С РРПК мы успешно сотрудничали ранее, были знакомы с особенностями отрасли и компании. Когда к нам пришли с третьим проектом, предложение звучало просто: «Нужен инструмент для планирования загрузки и разгрузки трюмов». Но за этой простотой формулировкой скрывалась задача, которую в отрасли годами решали вручную.

Транспортное судно выходит в море, забирает улов с нескольких траулеров — тонны мороженой рыбы, икры, муки, консервов. Дальше ему предстоит зайти в четыре порта и в каждом выгрузить строго определённые партии. Если загрузить всё подряд, в первом же порту выяснится, что нужный груз лежит в самом низу под центнерами другого товара. Разгрузка растягивается на часы, судно простаивает, теряются деньги.

Добавьте товарное соседство: замороженную рыбу нельзя класть рядом с мукой, криопротекторы должны быть в первом и втором трюмах, тара — в третьем и четвёртом. И всё это нужно учесть заранее, когда трюм ещё пуст.

Но проблема была не только в загрузке. Даже правильно уложенный груз нужно было ещё правильно разгрузить. В каждом порту — своя партия товара, свои ограничения по времени стоянки, свои особенности портового оборудования. Логисту приходилось планировать последовательность разгрузки так, чтобы в каждой точке маршрута экипаж знал, что именно и в каком порядке выгружать.

В РРПК этим занимался опытный логист, который для работы использовал стандартный Excel. На каждое судно уходило несколько часов работы, ошибка могла обойтись в сотни тысяч рублей простоя.

РРПК поставили задачу, которая в морской логистике часто решается практически вручную:

  • создать автоматический инструмент планирования загрузки и разгрузки трюмов с учётом десятков параметров;
  • интегрировать его в уже используемый Битрикс24, чтобы логисты работали в единой для всей компании среде;
  • обеспечить учёт товарного соседства, маршрута следования и особенностей конструкции каждого судна;
  • спланировать оптимальную последовательность разгрузки в каждом порту;
  • выдавать по итогу готовую схему загрузки и план разгрузки в привычном Excel за минуты, а не за часы ручной работы.
Решение

Любая логистическая система начинается с понимания, что именно следует оптимизировать. Мы сознательно выбрали фокусом весь цикл — от момента планирования загрузки до последней разгрузки в конечном порту. Логист получает данные о грузах и маршруте, а система за минуты выдаёт чёткий план действий для каждого порта разгрузки. Именно в эту точку упирается вся цепочка: производство, транспорт, порты.

Эта точка определила требования:

  • система должна работать быстро — несколько минут вместо нескольких часов;
  • схема должна быть реалистичной для любого типа судна, с учётом конструктивных особенностей старого и нового флота компании;
  • алгоритм должен учитывать товарное соседство, последовательность портов и физические ограничения трюмов при загрузке;
  • система должна планировать оптимальную последовательность разгрузки, показывая экипажу, что именно и из какой части трюма доставать в каждом порту;
  • интеграция с Битрикс24 и возможность автоматического обмена данными через API.

На этой логике выросло продуктовое решение: модуль Битрикс24 для автоматизации планирования загрузки и разгрузки на базе сложного алгоритма распределения, конфигуратора трюмов и интеграции с существующими системами клиента.

Этапы работ
1 этап

Базовая конфигурация и алгоритм распределения

Прежде чем писать алгоритм, нам нужно было создать инструмент для описания геометрии судов. Во флоте РРПК десятки кораблей разных поколений — каждый со своими особенностями.

  • Создали конфигуратор трюмов с возможностью задать размеры, количество ярусов и люков для каждого судна.
  • Добавили страницу редактирования в интерфейс Битрикс24, чтобы логисты могли работать с конфигурациями без обращения к разработчикам.
  • Разработали первую версию алгоритма оптимизации, который распределяет груз по трюмам с учётом маршрута и товарного соседства, а также планирует последовательность разгрузки.
  • Реализовали возможность планировать загрузку сразу с двух траулеров в один день — частая ситуация в работе флота.
2 этап

Работа с товарно-материальными ценностями

Оказалось, что кроме готовой продукции суда берут на борт запасы для экипажей траулеров — муку, консервы, криопротекторы. Эти грузы загружаются в портах и требуют отдельной логики размещения.

  • Доработали компонент загрузки для определения запасов по критерию портовой загрузки.
  • Реализовали определение порядка трюмов для ТМЦ на основании трюмов, используемых при перегрузке готовой продукции.
  • Добавили расчёт доступных ярусов под загрузку с учётом планируемой готовой продукции.
  • Распараллелили процесс сохранения данных по ТМЦ и готовой продукции для ускорения работы системы.
  • Переписали часть алгоритма специально под укладку провизии и материалов — она отличается от работы с уловом.
3 этап

Адаптация под флот заказчика

У РРПК два поколения судов с разными конструктивными особенностями. Кроме того, есть жёсткие требования по размещению определённых типов грузов.

  • Добавили логику для старого и нового флота с учётом различий в конструкции трюмов.
  • Внедрили требование размещать криопротекторы строго в 1-м и 2-м трюмах, а тару — в 3-м и 4-м.
  • Создали справочник подтипов продукции для более тонкого разграничения товарного соседства.
4 этап

Интеграция и доработка логики люков

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

  • Разработали сущности для работы с номенклатурой, упаковкой и ежедневным производством.
  • Настроили интеграцию с API клиента для автоматической передачи данных о грузах и маршрутах.
  • Переработали логику использования люка: теперь туда укладываются не только грузы для первого порта, но и для последующих — если это не мешает более ранним разгрузкам. Система проверяет содержимое каждого трюма и размещает товары на люке так, чтобы они были доступны в нужный момент без лишних перестановок.
  • Реализовали функцию планирования разгрузки: для каждого порта система показывает, какие грузы и из какой части трюма нужно выгружать, в какой последовательности, чтобы минимизировать время стоянки и объём перемещений.
Технологии
PHP
Битрикс24
1C:ERP
Vue.js
Bitrix D7
ORM
Результат

Система автоматизации планирования загрузки и разгрузки трюмов дала логистам РРПК возможность планировать за минуты то, на что раньше уходили часы, убрала человеческий фактор из критических расчётов, а для компания — снизила риски простоя судов в портах и оптимизировала процесс разгрузки.

Итоги первых месяцев эксплуатации:

  • Время планирования загрузки и разгрузки одного судна: с 3–4 часов до 10 минут
  • Сокращение ошибок: минимизирован человеческий фактор при расчёте товарного соседства и последовательности разгрузки
  • Оптимизация времени разгрузки: снижение простоя судов в портах за счёт правильной последовательности размещения грузов и заранее спланированного порядка выгрузки
  • Сокращение трудозатрат экипажа: экипаж получает готовый план разгрузки и не тратит время на поиск нужных грузов в трюме
Команда
проекта
Программист Битрикс24
Аналитик
Менеджер проекта
QA

Обсудить
проект