From b9f3172bf859a997bb93ff4e1e1a9727bf12d605 Mon Sep 17 00:00:00 2001 From: handwoong Date: Mon, 12 Jan 2026 04:19:40 +0900 Subject: [PATCH 1/3] =?UTF-8?q?fix:=20=EC=A3=BC=EB=AC=B8=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EC=8B=9C=20=EC=A3=BC=EB=B0=A9=20=EB=B9=8C=EC=A7=80?= =?UTF-8?q?=20=EC=83=9D=EC=84=B1=20=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/receipt/ReceiptCreateService.java | 4 +++- .../application/receipt/ReceiptSendEventHandler.java | 2 +- .../application/receipt/provided/ReceiptCreator.java | 3 +-- .../everyonewaiter/domain/order/OrderUpdateEvent.java | 2 +- .../java/com/everyonewaiter/domain/pos/PosTable.java | 11 ++++++++++- 5 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/everyonewaiter/application/receipt/ReceiptCreateService.java b/src/main/java/com/everyonewaiter/application/receipt/ReceiptCreateService.java index 2a55c7c..a8524e5 100644 --- a/src/main/java/com/everyonewaiter/application/receipt/ReceiptCreateService.java +++ b/src/main/java/com/everyonewaiter/application/receipt/ReceiptCreateService.java @@ -46,9 +46,11 @@ public Receipt create(Long storeId, int tableNo, List orderIds) { public @Nullable Receipt createDiff( Long storeId, int tableNo, - List orders, + List orderIds, OrderUpdateRequests updateRequests ) { + List orders = orderFinder.findAll(orderIds); + if (!Receipt.hasDiff(orders, updateRequests)) { return null; } diff --git a/src/main/java/com/everyonewaiter/application/receipt/ReceiptSendEventHandler.java b/src/main/java/com/everyonewaiter/application/receipt/ReceiptSendEventHandler.java index dd0fb53..3953922 100644 --- a/src/main/java/com/everyonewaiter/application/receipt/ReceiptSendEventHandler.java +++ b/src/main/java/com/everyonewaiter/application/receipt/ReceiptSendEventHandler.java @@ -50,7 +50,7 @@ public void handle(OrderUpdateEvent event) { Receipt diff = receiptCreator.createDiff( event.storeId(), event.tableNo(), - event.orders(), + event.orderIds(), event.updateRequests() ); diff --git a/src/main/java/com/everyonewaiter/application/receipt/provided/ReceiptCreator.java b/src/main/java/com/everyonewaiter/application/receipt/provided/ReceiptCreator.java index 892231e..4f81ca5 100644 --- a/src/main/java/com/everyonewaiter/application/receipt/provided/ReceiptCreator.java +++ b/src/main/java/com/everyonewaiter/application/receipt/provided/ReceiptCreator.java @@ -1,6 +1,5 @@ package com.everyonewaiter.application.receipt.provided; -import com.everyonewaiter.domain.order.Order; import com.everyonewaiter.domain.order.OrderUpdateRequests; import com.everyonewaiter.domain.receipt.Receipt; import jakarta.annotation.Nullable; @@ -17,7 +16,7 @@ public interface ReceiptCreator { Receipt createDiff( Long storeId, int tableNo, - List orders, + List orderIds, @Valid OrderUpdateRequests updateRequests ); diff --git a/src/main/java/com/everyonewaiter/domain/order/OrderUpdateEvent.java b/src/main/java/com/everyonewaiter/domain/order/OrderUpdateEvent.java index 1af8d80..243b74a 100644 --- a/src/main/java/com/everyonewaiter/domain/order/OrderUpdateEvent.java +++ b/src/main/java/com/everyonewaiter/domain/order/OrderUpdateEvent.java @@ -5,7 +5,7 @@ public record OrderUpdateEvent( Long storeId, int tableNo, - List orders, + List orderIds, OrderUpdateRequests updateRequests ) { diff --git a/src/main/java/com/everyonewaiter/domain/pos/PosTable.java b/src/main/java/com/everyonewaiter/domain/pos/PosTable.java index 195dbaa..e585b28 100644 --- a/src/main/java/com/everyonewaiter/domain/pos/PosTable.java +++ b/src/main/java/com/everyonewaiter/domain/pos/PosTable.java @@ -133,7 +133,16 @@ public void updateOrder(OrderUpdateRequests updateRequests) { posTableActivity.updateOrder(updateRequest); } - registerEvent(new OrderUpdateEvent(store.getId(), tableNo, getOrderedOrders(), updateRequests)); + registerEvent( + new OrderUpdateEvent( + store.getId(), + tableNo, + getOrderedOrders().stream() + .map(Order::getId) + .toList(), + updateRequests + ) + ); registerEvent(new SseEvent(store.getId(), ORDER, UPDATE, getTableNo())); registerEvent(new SseEvent(store.getId(), POS, UPDATE, getTableNo())); } From 92448cbbea918cf97da9079756cc2856b1b58e28 Mon Sep 17 00:00:00 2001 From: handwoong Date: Mon, 12 Jan 2026 04:35:16 +0900 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20=EC=A3=BC=EB=AC=B8=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EC=8B=9C=20=EC=A3=BC=EB=B0=A9=20=EB=B9=8C=EC=A7=80?= =?UTF-8?q?=20=EC=83=9D=EC=84=B1=20=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../receipt/ReceiptCreateService.java | 6 ++-- .../domain/receipt/Receipt.java | 36 +++++-------------- 2 files changed, 13 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/everyonewaiter/application/receipt/ReceiptCreateService.java b/src/main/java/com/everyonewaiter/application/receipt/ReceiptCreateService.java index a8524e5..706da38 100644 --- a/src/main/java/com/everyonewaiter/application/receipt/ReceiptCreateService.java +++ b/src/main/java/com/everyonewaiter/application/receipt/ReceiptCreateService.java @@ -51,13 +51,15 @@ public Receipt create(Long storeId, int tableNo, List orderIds) { ) { List orders = orderFinder.findAll(orderIds); - if (!Receipt.hasDiff(orders, updateRequests)) { + Receipt diff = Receipt.diff(tableNo, orders, updateRequests, receiptRepository.get(storeId)); + + if (diff == null) { return null; } receiptRepository.increment(storeId); - return Receipt.diff(tableNo, orders, updateRequests, receiptRepository.get(storeId)); + return diff.copy(receiptRepository.get(storeId)); } @Override diff --git a/src/main/java/com/everyonewaiter/domain/receipt/Receipt.java b/src/main/java/com/everyonewaiter/domain/receipt/Receipt.java index 05f562b..7819992 100644 --- a/src/main/java/com/everyonewaiter/domain/receipt/Receipt.java +++ b/src/main/java/com/everyonewaiter/domain/receipt/Receipt.java @@ -36,33 +36,6 @@ public static Receipt of(int tableNo, List orders, int printNo) { ); } - public static boolean hasDiff(List orders, OrderUpdateRequests updateRequests) { - Map beforeOrderMenus = orders.stream() - .flatMap(order -> order.getPrintEnabledOrderMenus().stream()) - .collect(Collectors.toMap(OrderMenu::getId, orderMenu -> orderMenu)); - - List afterOrderMenus = updateRequests.orders() - .stream() - .flatMap(order -> order.orderMenus().stream()) - .toList(); - - for (OrderMenuQuantityUpdateRequest afterOrderMenu : afterOrderMenus) { - if (!beforeOrderMenus.containsKey(afterOrderMenu.orderMenuId())) { - continue; - } - - OrderMenu orderMenu = beforeOrderMenus.get(afterOrderMenu.orderMenuId()); - - int updatedQuantity = afterOrderMenu.quantity() - orderMenu.getQuantity(); - - if (updatedQuantity != 0) { - return true; - } - } - - return false; - } - public static @Nullable Receipt diff( int tableNo, List orders, @@ -110,4 +83,13 @@ public static Receipt cancel(int tableNo, Order order, int printNo) { ); } + public Receipt copy(int printNo) { + return new Receipt( + this.tableNo, + this.memo, + printNo, + this.receiptMenus + ); + } + } From aa9cfb01c7f7b995d05b80e1838780beac789653 Mon Sep 17 00:00:00 2001 From: handwoong Date: Mon, 12 Jan 2026 04:53:36 +0900 Subject: [PATCH 3/3] =?UTF-8?q?fix:=20=EC=A3=BC=EB=AC=B8=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EC=8B=9C=20=EC=A3=BC=EB=B0=A9=20=EB=B9=8C=EC=A7=80?= =?UTF-8?q?=20=EC=83=9D=EC=84=B1=20=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../receipt/ReceiptCreateService.java | 25 ++++--------------- .../receipt/ReceiptSendEventHandler.java | 10 ++------ .../receipt/provided/ReceiptCreator.java | 13 ++-------- .../domain/order/OrderUpdateEvent.java | 10 +++----- .../everyonewaiter/domain/pos/PosTable.java | 14 +++-------- .../domain/receipt/Receipt.java | 12 +++------ 6 files changed, 19 insertions(+), 65 deletions(-) diff --git a/src/main/java/com/everyonewaiter/application/receipt/ReceiptCreateService.java b/src/main/java/com/everyonewaiter/application/receipt/ReceiptCreateService.java index 706da38..224731c 100644 --- a/src/main/java/com/everyonewaiter/application/receipt/ReceiptCreateService.java +++ b/src/main/java/com/everyonewaiter/application/receipt/ReceiptCreateService.java @@ -4,9 +4,7 @@ import com.everyonewaiter.application.receipt.provided.ReceiptCreator; import com.everyonewaiter.application.receipt.required.ReceiptPrintNoRepository; import com.everyonewaiter.domain.order.Order; -import com.everyonewaiter.domain.order.OrderUpdateRequests; import com.everyonewaiter.domain.receipt.Receipt; -import jakarta.annotation.Nullable; import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -43,33 +41,20 @@ public Receipt create(Long storeId, int tableNo, List orderIds) { @Override @Transactional(readOnly = true) - public @Nullable Receipt createDiff( - Long storeId, - int tableNo, - List orderIds, - OrderUpdateRequests updateRequests - ) { - List orders = orderFinder.findAll(orderIds); - - Receipt diff = Receipt.diff(tableNo, orders, updateRequests, receiptRepository.get(storeId)); - - if (diff == null) { - return null; - } + public Receipt createCancel(Long storeId, int tableNo, Long orderId) { + Order order = orderFinder.findOrThrow(orderId); receiptRepository.increment(storeId); - return diff.copy(receiptRepository.get(storeId)); + return Receipt.cancel(tableNo, order, receiptRepository.get(storeId)); } @Override @Transactional(readOnly = true) - public Receipt createCancel(Long storeId, int tableNo, Long orderId) { - Order order = orderFinder.findOrThrow(orderId); - + public Receipt copyWithIncrementPrintNo(Long storeId, Receipt receipt) { receiptRepository.increment(storeId); - return Receipt.cancel(tableNo, order, receiptRepository.get(storeId)); + return receipt.copy(receiptRepository.get(storeId)); } } diff --git a/src/main/java/com/everyonewaiter/application/receipt/ReceiptSendEventHandler.java b/src/main/java/com/everyonewaiter/application/receipt/ReceiptSendEventHandler.java index 3953922..6c86028 100644 --- a/src/main/java/com/everyonewaiter/application/receipt/ReceiptSendEventHandler.java +++ b/src/main/java/com/everyonewaiter/application/receipt/ReceiptSendEventHandler.java @@ -47,14 +47,8 @@ public void handle(OrderCreateEvent event) { public void handle(OrderUpdateEvent event) { LOGGER.info("[주문 수정 빌지 전송 이벤트] 매장 ID: {}, 테이블 번호: {}", event.storeId(), event.tableNo()); - Receipt diff = receiptCreator.createDiff( - event.storeId(), - event.tableNo(), - event.orderIds(), - event.updateRequests() - ); - - if (diff != null) { + if (event.diff() != null) { + Receipt diff = receiptCreator.copyWithIncrementPrintNo(event.storeId(), event.diff()); publishSseEvent(event.storeId(), diff); } } diff --git a/src/main/java/com/everyonewaiter/application/receipt/provided/ReceiptCreator.java b/src/main/java/com/everyonewaiter/application/receipt/provided/ReceiptCreator.java index 4f81ca5..8f7cf34 100644 --- a/src/main/java/com/everyonewaiter/application/receipt/provided/ReceiptCreator.java +++ b/src/main/java/com/everyonewaiter/application/receipt/provided/ReceiptCreator.java @@ -1,9 +1,6 @@ package com.everyonewaiter.application.receipt.provided; -import com.everyonewaiter.domain.order.OrderUpdateRequests; import com.everyonewaiter.domain.receipt.Receipt; -import jakarta.annotation.Nullable; -import jakarta.validation.Valid; import java.util.List; public interface ReceiptCreator { @@ -12,14 +9,8 @@ public interface ReceiptCreator { Receipt create(Long storeId, int tableNo, List orderIds); - @Nullable - Receipt createDiff( - Long storeId, - int tableNo, - List orderIds, - @Valid OrderUpdateRequests updateRequests - ); - Receipt createCancel(Long storeId, int tableNo, Long orderId); + Receipt copyWithIncrementPrintNo(Long storeId, Receipt receipt); + } diff --git a/src/main/java/com/everyonewaiter/domain/order/OrderUpdateEvent.java b/src/main/java/com/everyonewaiter/domain/order/OrderUpdateEvent.java index 243b74a..fc59fa3 100644 --- a/src/main/java/com/everyonewaiter/domain/order/OrderUpdateEvent.java +++ b/src/main/java/com/everyonewaiter/domain/order/OrderUpdateEvent.java @@ -1,12 +1,8 @@ package com.everyonewaiter.domain.order; -import java.util.List; +import com.everyonewaiter.domain.receipt.Receipt; +import org.jspecify.annotations.Nullable; -public record OrderUpdateEvent( - Long storeId, - int tableNo, - List orderIds, - OrderUpdateRequests updateRequests -) { +public record OrderUpdateEvent(Long storeId, int tableNo, @Nullable Receipt diff) { } diff --git a/src/main/java/com/everyonewaiter/domain/pos/PosTable.java b/src/main/java/com/everyonewaiter/domain/pos/PosTable.java index e585b28..354c24c 100644 --- a/src/main/java/com/everyonewaiter/domain/pos/PosTable.java +++ b/src/main/java/com/everyonewaiter/domain/pos/PosTable.java @@ -14,6 +14,7 @@ import com.everyonewaiter.domain.order.OrderUpdateEvent; import com.everyonewaiter.domain.order.OrderUpdateRequest; import com.everyonewaiter.domain.order.OrderUpdateRequests; +import com.everyonewaiter.domain.receipt.Receipt; import com.everyonewaiter.domain.receipt.ReceiptResendEvent; import com.everyonewaiter.domain.sse.SseEvent; import com.everyonewaiter.domain.store.Store; @@ -129,20 +130,13 @@ public void cancelOrder(Long orderId) { public void updateOrder(OrderUpdateRequests updateRequests) { PosTableActivity posTableActivity = getActiveActivityOrThrow(); + Receipt diff = Receipt.diff(getTableNo(), getOrderedOrders(), updateRequests); + for (OrderUpdateRequest updateRequest : updateRequests.orders()) { posTableActivity.updateOrder(updateRequest); } - registerEvent( - new OrderUpdateEvent( - store.getId(), - tableNo, - getOrderedOrders().stream() - .map(Order::getId) - .toList(), - updateRequests - ) - ); + registerEvent(new OrderUpdateEvent(store.getId(), tableNo, diff)); registerEvent(new SseEvent(store.getId(), ORDER, UPDATE, getTableNo())); registerEvent(new SseEvent(store.getId(), POS, UPDATE, getTableNo())); } diff --git a/src/main/java/com/everyonewaiter/domain/receipt/Receipt.java b/src/main/java/com/everyonewaiter/domain/receipt/Receipt.java index 7819992..6f7d628 100644 --- a/src/main/java/com/everyonewaiter/domain/receipt/Receipt.java +++ b/src/main/java/com/everyonewaiter/domain/receipt/Receipt.java @@ -39,8 +39,7 @@ public static Receipt of(int tableNo, List orders, int printNo) { public static @Nullable Receipt diff( int tableNo, List orders, - OrderUpdateRequests updateRequests, - int printNo + OrderUpdateRequests updateRequests ) { Map beforeOrderMenus = orders.stream() .flatMap(order -> order.getPrintEnabledOrderMenus().stream()) @@ -68,7 +67,7 @@ public static Receipt of(int tableNo, List orders, int printNo) { } } - return receiptMenus.isEmpty() ? null : new Receipt(tableNo, "", printNo, receiptMenus); + return receiptMenus.isEmpty() ? null : new Receipt(tableNo, "", 0, receiptMenus); } public static Receipt cancel(int tableNo, Order order, int printNo) { @@ -84,12 +83,7 @@ public static Receipt cancel(int tableNo, Order order, int printNo) { } public Receipt copy(int printNo) { - return new Receipt( - this.tableNo, - this.memo, - printNo, - this.receiptMenus - ); + return new Receipt(this.tableNo, this.memo, printNo, this.receiptMenus); } }