new scheme
This commit is contained in:
158
oms/process/correction-wtis.puml
Normal file
158
oms/process/correction-wtis.puml
Normal file
@@ -0,0 +1,158 @@
|
||||
@startuml
|
||||
!theme plain
|
||||
title Обработка корректировки заказа на WTIS
|
||||
|
||||
participant "Kafka" as Kafka
|
||||
participant "Обработчик" as Handler
|
||||
participant "Сервис синхронизации" as Service
|
||||
participant "Сравнитель заказов" as Differ
|
||||
participant "Создатель заказов" as Creator
|
||||
participant "Резервирование" as Reserve
|
||||
participant "База данных" as DB
|
||||
|
||||
== Получение корректировки ==
|
||||
Kafka -> Handler: Сообщение корректировки
|
||||
Handler -> Service: Обработать корректировку
|
||||
|
||||
== Поиск заказа ==
|
||||
Service -> DB: Найти заказ по GUID
|
||||
alt Заказ не найден
|
||||
Service -> Creator: Создать новый заказ
|
||||
else Заказ существует
|
||||
Service -> Differ: Сравнить заказы OMS и WTIS
|
||||
|
||||
== Анализ изменений ==
|
||||
Differ -> Differ: Сравнить поля заказа
|
||||
note right: регион, ПВЗ, способ доставки,\nконтрагент, адрес, дата доставки
|
||||
Differ -> Differ: Сравнить товарные позиции
|
||||
note right: количество, цены, резерв
|
||||
Differ --> Service: Список изменений
|
||||
|
||||
== Специальная обработка смены региона/ПВЗ ==
|
||||
alt Смена региона или ПВЗ
|
||||
Service -> Reserve: Снять резерв со всех товаров
|
||||
note right: При смене региона/ПВЗ\nснимается весь резерв
|
||||
end
|
||||
|
||||
== Применение изменений ==
|
||||
Service -> Differ: Применить изменения к заказу
|
||||
Service -> Creator: Сохранить заказ
|
||||
|
||||
== Обработка товаров ==
|
||||
note over Service: **ДЕТАЛЬНАЯ СХЕМА:**\n"Обработка товарных позиций"
|
||||
Service -> Service: Определить операции с товарами
|
||||
note right: Товары для добавления,\nизменения, удаления
|
||||
|
||||
alt Есть товары для добавления
|
||||
Service -> Creator: Добавить новые товары
|
||||
end
|
||||
|
||||
alt Есть товары для изменения
|
||||
Service -> Service: Обновить существующие товары
|
||||
note right: **См. детальную схему:**\n- Изменение количества (split)\n- Изменение цен\n- Изменение резерва
|
||||
end
|
||||
|
||||
alt Есть товары для удаления
|
||||
Service -> Reserve: Снять резерв
|
||||
Service -> Service: Удалить товары
|
||||
note right: **См. детальную схему:**\nУстановка статуса "Удален"
|
||||
end
|
||||
end
|
||||
|
||||
== Резервирование товаров ==
|
||||
note over Service: **ДЕТАЛЬНАЯ СХЕМА:**\n"Обработка товарных позиций"\n(блок "Резервирование")
|
||||
alt Есть товары для резервирования
|
||||
Service -> Reserve: Зарезервировать товары
|
||||
note right: Из массива reserve
|
||||
end
|
||||
|
||||
alt Есть товары для снятия резерва
|
||||
Service -> Reserve: Снять резерв
|
||||
note right: Из массива unreserve
|
||||
end
|
||||
|
||||
== Завершение ==
|
||||
Service -> Service: Обновить сайтовый заказ
|
||||
Service -> Service: Отправить SMS клиенту
|
||||
Service -> Service: Экспортировать в OMS
|
||||
Service --> Handler: Результат обработки
|
||||
Handler --> Kafka: Подтверждение
|
||||
|
||||
@enduml
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@startuml
|
||||
!theme plain
|
||||
title Обработка корректировки заказа на WTIS
|
||||
|
||||
start
|
||||
:Получение сообщения корректировки из Kafka oms.order.sync;
|
||||
|
||||
if (Заказ найден в БД?) then (нет)
|
||||
:Создать новый заказ;
|
||||
else (да)
|
||||
:Сравнить заказы OMS и WTIS по атрибутам;
|
||||
|
||||
if (Смена региона или ПВЗ И есть товары для резерва?) then (да)
|
||||
:Снять резерв с товаров из массива reserve;
|
||||
else (нет)
|
||||
endif
|
||||
|
||||
:Применить изменения к заказу;
|
||||
:Сохранить заказ в БД;
|
||||
|
||||
:Определить операции с товарами;
|
||||
|
||||
if (Есть товары для добавления?) then (да)
|
||||
:Добавить новые товары в заказ;
|
||||
else (нет)
|
||||
endif
|
||||
|
||||
if (Есть товары для изменения?) then (да)
|
||||
:Обновить существующие товары;
|
||||
if (Есть товары с уменьшением количества в резерве?) then (да)
|
||||
:Создать копию товара с новым количеством;
|
||||
:Удалить избыточную часть;
|
||||
else (нет)
|
||||
endif
|
||||
else (нет)
|
||||
endif
|
||||
|
||||
if (Есть товары для удаления?) then (да)
|
||||
:Снять резерв с товаров;
|
||||
:Установить статус "Удален";
|
||||
:Удалить товары из заказа;
|
||||
else (нет)
|
||||
endif
|
||||
|
||||
:Установить скидки, контакты, адреса;
|
||||
:Обновить дополнительные свойства заказа;
|
||||
|
||||
if (Есть товары для резервирования И не сайтовый заказ?) then (да)
|
||||
:Зарезервировать товары из массива reserve;
|
||||
else (нет)
|
||||
endif
|
||||
|
||||
if (Есть товары для снятия резерва И не отмена заказа?) then (да)
|
||||
:Снять резерв с товаров из массива unreserve;
|
||||
else (нет)
|
||||
endif
|
||||
|
||||
:Обновить заказ во wtis_doc_zayavki;
|
||||
:Обновить заказ во wtis_doc_zayavki_site;
|
||||
|
||||
if (Не сайтовый заказ И активный И подтвержденный?) then (да)
|
||||
:Отправить SMS клиенту с задержкой 10 минут;
|
||||
else (нет)
|
||||
endif
|
||||
|
||||
:Экспортировать данные обратно в OMS;
|
||||
endif
|
||||
|
||||
:Подтверждение обработки в Kafka;
|
||||
stop
|
||||
|
||||
@enduml
|
||||
Reference in New Issue
Block a user