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"> -