From 2a3cd3153959455e1dad51b94058ce836d14a81b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A3=BC=EC=9D=BC?= Date: Thu, 9 Jul 2026 16:57:04 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20ACI=20=EC=B6=9C=EA=B3=A0=20=EB=B0=B0?= =?UTF-8?q?=EC=B9=98=20=EC=B6=9C=EA=B3=A0=EA=B3=A0=EC=9C=A0=EB=B2=88?= =?UTF-8?q?=ED=98=B8=20=EC=B1=84=EB=B2=88=20=EC=98=A4=EB=A5=98=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../acidlivy/tasklet/AciDlivyTasklet.java | 24 +++++++++------ .../acidlivy/vo/AciDlivyOrderVO.java | 4 +-- .../mapper/gcone/AciDlivyMapper.java | 5 +++- .../xml/mapper/acidlivy/AciDlivyMapper.xml | 30 ++++++++++++++----- 4 files changed, 43 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/wb/domainserver/acidlivy/tasklet/AciDlivyTasklet.java b/src/main/java/com/wb/domainserver/acidlivy/tasklet/AciDlivyTasklet.java index 17c139e..2999727 100644 --- a/src/main/java/com/wb/domainserver/acidlivy/tasklet/AciDlivyTasklet.java +++ b/src/main/java/com/wb/domainserver/acidlivy/tasklet/AciDlivyTasklet.java @@ -240,22 +240,28 @@ public class AciDlivyTasklet implements Tasklet { } log.debug("[AciDlivyBatch] 주문 상품 옵션 수={} (ORDR_DLVY_INNB={})", itemList.size(), orderVO.getOrdrDlvyInnb()); - // ② DLIVY_INNB = ORDR_DLVY_INNB (gc_order_shipping.ORDR_DLVY_INNB → gc_goods_export.DLIVY_INNB) - orderVO.setDlivyInnb(orderVO.getOrdrDlvyInnb()); - - // ③ dlivyCdNb 생성 (DLIVY_INNB 확정 후, INSERT 전) - String dlivyCdNb = "D" + new SimpleDateFormat("yyMMddHH").format(new Date()) + orderVO.getDlivyInnb(); - orderVO.setDlivyCdNb(dlivyCdNb); - - // ④ gc_goods_export INSERT/UPDATE (dlivyCdNb 직접 포함) + // ② gc_goods_export INSERT/UPDATE int exportCnt = aciDlivyMapper.selectGoodsExportCount(orderVO); + boolean newExport = exportCnt == 0; if (exportCnt > 0) { + String dlivyInnb = aciDlivyMapper.selectGoodsExportDlivyInnb(orderVO); + if (dlivyInnb == null || dlivyInnb.isBlank()) { + throw new IllegalStateException("기존 출고번호 조회 실패 - ORDR_INNB=" + orderVO.getOrdrInnb() + + ", ORDR_DLVY_INNB=" + orderVO.getOrdrDlvyInnb()); + } + orderVO.setDlivyInnb(dlivyInnb); aciDlivyMapper.updateGoodsExport(orderVO); } else { aciDlivyMapper.insertGoodsExport(orderVO); } - // ⑤ 주문 상품 옵션별 처리 (gc_goods_export_item, gc_order_item_option) + String dlivyCdNb = "D" + new SimpleDateFormat("yyMMddHH").format(new Date()) + orderVO.getDlivyInnb(); + orderVO.setDlivyCdNb(dlivyCdNb); + if (newExport) { + aciDlivyMapper.updateGoodsExportDlivyCdNb(orderVO); + } + + // ③ 주문 상품 옵션별 처리 (gc_goods_export_item, gc_order_item_option) for (DataMap itemMap : itemList) { Object qyObj = itemMap.get("qy"); if (qyObj == null) continue; diff --git a/src/main/java/com/wb/domainserver/acidlivy/vo/AciDlivyOrderVO.java b/src/main/java/com/wb/domainserver/acidlivy/vo/AciDlivyOrderVO.java index 192c7db..d2ebfb0 100644 --- a/src/main/java/com/wb/domainserver/acidlivy/vo/AciDlivyOrderVO.java +++ b/src/main/java/com/wb/domainserver/acidlivy/vo/AciDlivyOrderVO.java @@ -20,6 +20,6 @@ public class AciDlivyOrderVO { private String blno; // ACI 운송장번호 (BLNO) private String hdrycpnCd; // 택배사코드 (고정값: code22) private String dlivySttusCd; // 출고상태코드 (고정값: 55) - private String dlivyInnb; // 출고고유번호 (gc_goods_export.DLIVY_INNB = ordrDlvyInnb) - private String dlivyCdNb; // 출고코드번호 ('D'+yyMMddHH+dlivyInnb 형식, INSERT 전 Java에서 생성) + private String dlivyInnb; // 출고고유번호 (gc_goods_export.DLIVY_INNB) + private String dlivyCdNb; // 출고코드번호 ('D'+yyMMddHH+dlivyInnb 형식) } diff --git a/src/main/java/com/wb/domainserver/mapper/gcone/AciDlivyMapper.java b/src/main/java/com/wb/domainserver/mapper/gcone/AciDlivyMapper.java index d373619..35d614b 100644 --- a/src/main/java/com/wb/domainserver/mapper/gcone/AciDlivyMapper.java +++ b/src/main/java/com/wb/domainserver/mapper/gcone/AciDlivyMapper.java @@ -21,13 +21,16 @@ public interface AciDlivyMapper { /** gc_goods_export 존재 여부 */ int selectGoodsExportCount(AciDlivyOrderVO vo); + /** 기존 gc_goods_export 출고고유번호 조회 */ + String selectGoodsExportDlivyInnb(AciDlivyOrderVO vo); + /** gc_goods_export INSERT */ int insertGoodsExport(AciDlivyOrderVO vo); /** gc_goods_export UPDATE (기존 레코드 있음) */ int updateGoodsExport(AciDlivyOrderVO vo); - /** gc_goods_export DLIVY_CD_NB UPDATE (미사용 - dlivyCdNb는 INSERT 전 Java에서 생성) */ + /** gc_goods_export DLIVY_CD_NB UPDATE (신규 출고 생성키 수신 후 호출) */ int updateGoodsExportDlivyCdNb(AciDlivyOrderVO vo); /** gc_goods_export_item 존재 여부 */ diff --git a/src/main/resources/mybatis/xml/mapper/acidlivy/AciDlivyMapper.xml b/src/main/resources/mybatis/xml/mapper/acidlivy/AciDlivyMapper.xml index 5a7c51b..2192f5d 100644 --- a/src/main/resources/mybatis/xml/mapper/acidlivy/AciDlivyMapper.xml +++ b/src/main/resources/mybatis/xml/mapper/acidlivy/AciDlivyMapper.xml @@ -52,22 +52,38 @@ AND HDRYCPN_CD = #{hdrycpnCd} ]]> + + + - - + + + parameterType="com.wb.domainserver.acidlivy.vo.AciDlivyOrderVO" + useGeneratedKeys="true" + keyProperty="dlivyInnb" + keyColumn="DLIVY_INNB"> -