fix: ACI 출고 배치 출고고유번호 채번 오류 수정
This commit is contained in:
@@ -240,22 +240,28 @@ public class AciDlivyTasklet implements Tasklet {
|
|||||||
}
|
}
|
||||||
log.debug("[AciDlivyBatch] 주문 상품 옵션 수={} (ORDR_DLVY_INNB={})", itemList.size(), orderVO.getOrdrDlvyInnb());
|
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)
|
// ② gc_goods_export INSERT/UPDATE
|
||||||
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 직접 포함)
|
|
||||||
int exportCnt = aciDlivyMapper.selectGoodsExportCount(orderVO);
|
int exportCnt = aciDlivyMapper.selectGoodsExportCount(orderVO);
|
||||||
|
boolean newExport = exportCnt == 0;
|
||||||
if (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);
|
aciDlivyMapper.updateGoodsExport(orderVO);
|
||||||
} else {
|
} else {
|
||||||
aciDlivyMapper.insertGoodsExport(orderVO);
|
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) {
|
for (DataMap itemMap : itemList) {
|
||||||
Object qyObj = itemMap.get("qy");
|
Object qyObj = itemMap.get("qy");
|
||||||
if (qyObj == null) continue;
|
if (qyObj == null) continue;
|
||||||
|
|||||||
@@ -20,6 +20,6 @@ public class AciDlivyOrderVO {
|
|||||||
private String blno; // ACI 운송장번호 (BLNO)
|
private String blno; // ACI 운송장번호 (BLNO)
|
||||||
private String hdrycpnCd; // 택배사코드 (고정값: code22)
|
private String hdrycpnCd; // 택배사코드 (고정값: code22)
|
||||||
private String dlivySttusCd; // 출고상태코드 (고정값: 55)
|
private String dlivySttusCd; // 출고상태코드 (고정값: 55)
|
||||||
private String dlivyInnb; // 출고고유번호 (gc_goods_export.DLIVY_INNB = ordrDlvyInnb)
|
private String dlivyInnb; // 출고고유번호 (gc_goods_export.DLIVY_INNB)
|
||||||
private String dlivyCdNb; // 출고코드번호 ('D'+yyMMddHH+dlivyInnb 형식, INSERT 전 Java에서 생성)
|
private String dlivyCdNb; // 출고코드번호 ('D'+yyMMddHH+dlivyInnb 형식)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,13 +21,16 @@ public interface AciDlivyMapper {
|
|||||||
/** gc_goods_export 존재 여부 */
|
/** gc_goods_export 존재 여부 */
|
||||||
int selectGoodsExportCount(AciDlivyOrderVO vo);
|
int selectGoodsExportCount(AciDlivyOrderVO vo);
|
||||||
|
|
||||||
|
/** 기존 gc_goods_export 출고고유번호 조회 */
|
||||||
|
String selectGoodsExportDlivyInnb(AciDlivyOrderVO vo);
|
||||||
|
|
||||||
/** gc_goods_export INSERT */
|
/** gc_goods_export INSERT */
|
||||||
int insertGoodsExport(AciDlivyOrderVO vo);
|
int insertGoodsExport(AciDlivyOrderVO vo);
|
||||||
|
|
||||||
/** gc_goods_export UPDATE (기존 레코드 있음) */
|
/** gc_goods_export UPDATE (기존 레코드 있음) */
|
||||||
int updateGoodsExport(AciDlivyOrderVO vo);
|
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);
|
int updateGoodsExportDlivyCdNb(AciDlivyOrderVO vo);
|
||||||
|
|
||||||
/** gc_goods_export_item 존재 여부 */
|
/** gc_goods_export_item 존재 여부 */
|
||||||
|
|||||||
@@ -52,22 +52,38 @@
|
|||||||
AND HDRYCPN_CD = #{hdrycpnCd}
|
AND HDRYCPN_CD = #{hdrycpnCd}
|
||||||
]]>
|
]]>
|
||||||
</select>
|
</select>
|
||||||
|
<!-- 기존 gc_goods_export 출고고유번호 조회 -->
|
||||||
|
<select id="selectGoodsExportDlivyInnb"
|
||||||
|
parameterType="com.wb.domainserver.acidlivy.vo.AciDlivyOrderVO"
|
||||||
|
resultType="java.lang.String">
|
||||||
|
<![CDATA[
|
||||||
|
SELECT DLIVY_INNB
|
||||||
|
FROM GC_GOODS_EXPORT
|
||||||
|
WHERE SOPMAL_CD = #{sopmalCd}
|
||||||
|
AND ORDR_INNB = #{ordrInnb}
|
||||||
|
AND ORDR_DLVY_INNB = #{ordrDlvyInnb}
|
||||||
|
AND HDRYCPN_CD = #{hdrycpnCd}
|
||||||
|
LIMIT 1
|
||||||
|
]]>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- gc_goods_export INSERT -->
|
<!-- gc_goods_export INSERT -->
|
||||||
<!-- DLIVY_INNB: gc_order_shipping.ORDR_DLVY_INNB 값 사용 (Java에서 dlivyInnb = ordrDlvyInnb 세팅 후 전달) -->
|
<!-- DLIVY_INNB: DB AUTO_INCREMENT 생성키 사용 -->
|
||||||
<!-- DLIVY_CD_NB: Java에서 생성한 dlivyCdNb 직접 포함 (INSERT 전 생성) -->
|
<!-- DLIVY_CD_NB: 생성키 수신 후 updateGoodsExportDlivyCdNb에서 설정 -->
|
||||||
<!-- HDRYCPN_CD: code22 고정, INVCNB: ACI BLNO -->
|
<!-- HDRYCPN_CD: code22 고정, INVCNB: ACI BLNO -->
|
||||||
<insert id="insertGoodsExport"
|
<insert id="insertGoodsExport"
|
||||||
parameterType="com.wb.domainserver.acidlivy.vo.AciDlivyOrderVO">
|
parameterType="com.wb.domainserver.acidlivy.vo.AciDlivyOrderVO"
|
||||||
|
useGeneratedKeys="true"
|
||||||
|
keyProperty="dlivyInnb"
|
||||||
|
keyColumn="DLIVY_INNB">
|
||||||
|
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
INSERT INTO GC_GOODS_EXPORT (
|
INSERT INTO GC_GOODS_EXPORT (
|
||||||
DLIVY_INNB,
|
|
||||||
SOPMAL_CD,
|
SOPMAL_CD,
|
||||||
ORDR_INNB,
|
ORDR_INNB,
|
||||||
ORDR_DLVY_INNB,
|
ORDR_DLVY_INNB,
|
||||||
DLIVY_CD_NB,
|
|
||||||
DLIVY_STTUS_CD,
|
DLIVY_STTUS_CD,
|
||||||
STTUS_UPDT_DT,
|
STTUS_UPDT_DT,
|
||||||
HDRYCPN_CD,
|
HDRYCPN_CD,
|
||||||
@@ -78,11 +94,9 @@
|
|||||||
REGIST_DT,
|
REGIST_DT,
|
||||||
UPDT_DT
|
UPDT_DT
|
||||||
) VALUES (
|
) VALUES (
|
||||||
#{dlivyInnb},
|
|
||||||
#{sopmalCd},
|
#{sopmalCd},
|
||||||
#{ordrInnb},
|
#{ordrInnb},
|
||||||
#{ordrDlvyInnb},
|
#{ordrDlvyInnb},
|
||||||
#{dlivyCdNb},
|
|
||||||
#{dlivySttusCd},
|
#{dlivySttusCd},
|
||||||
SYSDATE(),
|
SYSDATE(),
|
||||||
#{hdrycpnCd},
|
#{hdrycpnCd},
|
||||||
@@ -106,12 +120,12 @@
|
|||||||
DLIVY_CD_NB = #{dlivyCdNb},
|
DLIVY_CD_NB = #{dlivyCdNb},
|
||||||
UPDT_DT = SYSDATE()
|
UPDT_DT = SYSDATE()
|
||||||
WHERE DLIVY_INNB = #{dlivyInnb}
|
WHERE DLIVY_INNB = #{dlivyInnb}
|
||||||
|
AND SOPMAL_CD = #{sopmalCd}
|
||||||
]]>
|
]]>
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
|
||||||
<!-- gc_goods_export UPDATE (기존 레코드 있음) -->
|
<!-- gc_goods_export UPDATE (기존 레코드 있음) -->
|
||||||
<!-- gc_goods_export UPDATE (기존 레코드 있음, dlivyInnb = ordrDlvyInnb Java 세팅) -->
|
|
||||||
<update id="updateGoodsExport"
|
<update id="updateGoodsExport"
|
||||||
parameterType="com.wb.domainserver.acidlivy.vo.AciDlivyOrderVO">
|
parameterType="com.wb.domainserver.acidlivy.vo.AciDlivyOrderVO">
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user