[BOM] 동기화 배치 statCd 처리를 delete-first → merge 2단계로 분리 — 같은 키 A+D 동시 송신 시 A 가 이김 #496
@ -116,11 +116,18 @@ public class DisplayItemService {
|
|||||||
*/
|
*/
|
||||||
public int setBomSyncSave(List<BomSyncResponse> bomSyncList) throws Exception {
|
public int setBomSyncSave(List<BomSyncResponse> bomSyncList) throws Exception {
|
||||||
int cnt = 0;
|
int cnt = 0;
|
||||||
|
// 2026-05-12 같은 키(PACKAGE_ITEM_ID, ITEM_ID)에 A/D 가 함께 오는 케이스 대비,
|
||||||
|
// 외부 응답 순서와 무관하게 결정적 결과(A 가 이김)를 보장하기 위해 2단계로 처리.
|
||||||
|
// 1단계: D 먼저 전부 DELETE
|
||||||
for (BomSyncResponse bomSyncData : bomSyncList) {
|
for (BomSyncResponse bomSyncData : bomSyncList) {
|
||||||
if ("D".equals(bomSyncData.getStatCd())) {
|
if ("D".equals(bomSyncData.getStatCd())) {
|
||||||
// Bom 아이템 삭제 처리
|
// Bom 아이템 삭제 처리
|
||||||
cnt += displayItemMapper.deleteBomSync(bomSyncData);
|
cnt += displayItemMapper.deleteBomSync(bomSyncData);
|
||||||
} else {
|
}
|
||||||
|
}
|
||||||
|
// 2단계: D 외 전부 MERGE (upsert)
|
||||||
|
for (BomSyncResponse bomSyncData : bomSyncList) {
|
||||||
|
if (!"D".equals(bomSyncData.getStatCd())) {
|
||||||
// Bom 아이템 수정/등록 처리
|
// Bom 아이템 수정/등록 처리
|
||||||
cnt += displayItemMapper.setBomSyncSave(bomSyncData);
|
cnt += displayItemMapper.setBomSyncSave(bomSyncData);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user