From ca06b1e7e4f14de5bd54f7c47803e24066a3b771 Mon Sep 17 00:00:00 2001 From: ysCha Date: Tue, 12 May 2026 14:14:41 +0900 Subject: [PATCH] =?UTF-8?q?[BOM]=20=EB=8F=99=EA=B8=B0=ED=99=94=20=EB=B0=B0?= =?UTF-8?q?=EC=B9=98=20statCd=20=EC=B2=98=EB=A6=AC=EB=A5=BC=20delete-first?= =?UTF-8?q?=20=E2=86=92=20merge=202=EB=8B=A8=EA=B3=84=EB=A1=9C=20=EB=B6=84?= =?UTF-8?q?=EB=A6=AC=20=E2=80=94=20=EA=B0=99=EC=9D=80=20=ED=82=A4=20A+D=20?= =?UTF-8?q?=EB=8F=99=EC=8B=9C=20=EC=86=A1=EC=8B=A0=20=EC=8B=9C=20A=20?= =?UTF-8?q?=EA=B0=80=20=EC=9D=B4=EA=B9=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qcast/biz/displayItem/DisplayItemService.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/interplug/qcast/biz/displayItem/DisplayItemService.java b/src/main/java/com/interplug/qcast/biz/displayItem/DisplayItemService.java index 296b2861..7cd19a56 100644 --- a/src/main/java/com/interplug/qcast/biz/displayItem/DisplayItemService.java +++ b/src/main/java/com/interplug/qcast/biz/displayItem/DisplayItemService.java @@ -116,11 +116,18 @@ public class DisplayItemService { */ public int setBomSyncSave(List bomSyncList) throws Exception { int cnt = 0; + // 2026-05-12 같은 키(PACKAGE_ITEM_ID, ITEM_ID)에 A/D 가 함께 오는 케이스 대비, + // 외부 응답 순서와 무관하게 결정적 결과(A 가 이김)를 보장하기 위해 2단계로 처리. + // 1단계: D 먼저 전부 DELETE for (BomSyncResponse bomSyncData : bomSyncList) { if ("D".equals(bomSyncData.getStatCd())) { // Bom 아이템 삭제 처리 cnt += displayItemMapper.deleteBomSync(bomSyncData); - } else { + } + } + // 2단계: D 외 전부 MERGE (upsert) + for (BomSyncResponse bomSyncData : bomSyncList) { + if (!"D".equals(bomSyncData.getStatCd())) { // Bom 아이템 수정/등록 처리 cnt += displayItemMapper.setBomSyncSave(bomSyncData); } -- 2.47.2