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 113eb37..e89afac 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/gcone/AciDlivyMapper.xml b/src/main/resources/mybatis/xml/mapper/gcone/AciDlivyMapper.xml
index 5a7c51b..2192f5d 100644
--- a/src/main/resources/mybatis/xml/mapper/gcone/AciDlivyMapper.xml
+++ b/src/main/resources/mybatis/xml/mapper/gcone/AciDlivyMapper.xml
@@ -52,22 +52,38 @@
AND HDRYCPN_CD = #{hdrycpnCd}
]]>
+
+
+
-
-
+
+
+ parameterType="com.wb.domainserver.acidlivy.vo.AciDlivyOrderVO"
+ useGeneratedKeys="true"
+ keyProperty="dlivyInnb"
+ keyColumn="DLIVY_INNB">
-