feat: AciDlivyTasklet processDelivery 수정 - 0건 스킵, dlivyCdNb Java 통일, orderLogMap 누락값 추가
This commit is contained in:
@@ -10,37 +10,40 @@ import java.util.List;
|
||||
@Repository
|
||||
public interface AciDlivyMapper {
|
||||
|
||||
/** ?? ?? ???? ?? ?? (gc_order_shipping.ORDR_STTUS_CD = '35') */
|
||||
/** 출고 대상 주문 목록 조회 (gc_order_shipping.ORDR_STTUS_CD = '35') */
|
||||
List<AciDlivyOrderVO> selectAciDlivyTargetList();
|
||||
|
||||
/** ?? ?? ?????? ?? ?? (gc_order_item_option) */
|
||||
/** 출고 대상 주문상품 옵션 조회 (gc_order_item_option) */
|
||||
List<DataMap> selectAciDlivyTargetItemList(AciDlivyOrderVO vo);
|
||||
|
||||
/** gc_goods_export ?? ?? */
|
||||
/** gc_goods_export 존재 여부 */
|
||||
int selectGoodsExportCount(AciDlivyOrderVO vo);
|
||||
|
||||
/** gc_goods_export INSERT */
|
||||
int insertGoodsExport(AciDlivyOrderVO vo);
|
||||
|
||||
/** gc_goods_export UPDATE (?? ???? ??) */
|
||||
/** gc_goods_export UPDATE (기존 레코드 있음) */
|
||||
int updateGoodsExport(AciDlivyOrderVO vo);
|
||||
|
||||
/** gc_goods_export_item ?? ?? */
|
||||
/** gc_goods_export DLIVY_CD_NB UPDATE (INSERT 경로에서 dlivyCdNb 생성 후 호출) */
|
||||
int updateGoodsExportDlivyCdNb(AciDlivyOrderVO vo);
|
||||
|
||||
/** gc_goods_export_item 존재 여부 */
|
||||
int selectGoodsExportItemCount(DataMap itemMap);
|
||||
|
||||
/** gc_goods_export_item INSERT */
|
||||
int insertGoodsExportItem(DataMap itemMap);
|
||||
|
||||
/** gc_goods_export_item UPDATE (?? ???? ??) */
|
||||
/** gc_goods_export_item UPDATE (기존 레코드 있음) */
|
||||
int updateGoodsExportItem(DataMap itemMap);
|
||||
|
||||
/** gc_order_item_option ?? UPDATE */
|
||||
/** gc_order_item_option 상태 UPDATE */
|
||||
int updateOrderItemOptionStatus(DataMap itemMap);
|
||||
|
||||
/** gc_order_shipping ?? UPDATE (?? item_option ?? ???? ?? ??) */
|
||||
/** gc_order_shipping 상태 UPDATE (하위 item_option 상태 기반으로 동적 결정) */
|
||||
int updateOrderShippingStatus(AciDlivyOrderVO vo);
|
||||
|
||||
/** gc_order ?? UPDATE (?? shipping ?? ???? ?? ??) */
|
||||
/** gc_order 상태 UPDATE (하위 shipping 상태 기반으로 동적 결정) */
|
||||
int updateOrderStatus(AciDlivyOrderVO vo);
|
||||
|
||||
/** GC_GOODS_EXPORT_LOG INSERT */
|
||||
@@ -48,4 +51,4 @@ public interface AciDlivyMapper {
|
||||
|
||||
/** GC_ORDER_LOG INSERT */
|
||||
int insertOrderLog(DataMap logMap);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -230,7 +230,15 @@ public class AciDlivyTasklet implements Tasklet {
|
||||
*/
|
||||
private void processDelivery(AciDlivyOrderVO orderVO) {
|
||||
|
||||
// 출고 gc_goods_export 처리
|
||||
// ① 주문 상품 옵션 목록 먼저 조회 (0건이면 출고처리 전체 스킵)
|
||||
List<DataMap> itemList = aciDlivyMapper.selectAciDlivyTargetItemList(orderVO);
|
||||
if (itemList.isEmpty()) {
|
||||
log.warn("[AciDlivyBatch] 주문 상품 옵션 없음 - 출고처리 스킵 (ORDR_DLVY_INNB={})", orderVO.getOrdrDlvyInnb());
|
||||
return;
|
||||
}
|
||||
log.debug("[AciDlivyBatch] 주문 상품 옵션 수={} (ORDR_DLVY_INNB={})", itemList.size(), orderVO.getOrdrDlvyInnb());
|
||||
|
||||
// ② gc_goods_export 처리 (selectKey로 dlivyInnb 채번)
|
||||
int exportCnt = aciDlivyMapper.selectGoodsExportCount(orderVO);
|
||||
if (exportCnt > 0) {
|
||||
aciDlivyMapper.updateGoodsExport(orderVO);
|
||||
@@ -238,14 +246,16 @@ public class AciDlivyTasklet implements Tasklet {
|
||||
aciDlivyMapper.insertGoodsExport(orderVO);
|
||||
}
|
||||
|
||||
// 출고코드 생성 (GC_GOODS_EXPORT의 DLIVY_CD_NB 규칙 따름)
|
||||
// ③ dlivyCdNb 생성 (insertGoodsExport 실행 후, dlivyInnb 채번 완료 후)
|
||||
String dlivyCdNb = "D" + new SimpleDateFormat("yyMMddHH").format(new Date()) + orderVO.getDlivyInnb();
|
||||
orderVO.setDlivyCdNb(dlivyCdNb);
|
||||
|
||||
// 주문 상품 옵션 목록 조회 및 건별 처리 (gc_order_item_option)
|
||||
List<DataMap> itemList = aciDlivyMapper.selectAciDlivyTargetItemList(orderVO);
|
||||
log.debug("[AciDlivyBatch] 주문 상품 옵션 수={} (ORDR_DLVY_INNB={})", itemList.size(), orderVO.getOrdrDlvyInnb());
|
||||
// ④ INSERT 경로: DLIVY_CD_NB 업데이트 (INSERT 시 #{dlivyCdNb}가 null이었으므로)
|
||||
if (exportCnt == 0) {
|
||||
aciDlivyMapper.updateGoodsExportDlivyCdNb(orderVO);
|
||||
}
|
||||
|
||||
// ⑤ 주문 상품 옵션별 처리 (gc_goods_export_item, gc_order_item_option)
|
||||
for (DataMap itemMap : itemList) {
|
||||
Object qyObj = itemMap.get("qy");
|
||||
if (qyObj == null) continue;
|
||||
@@ -289,19 +299,21 @@ public class AciDlivyTasklet implements Tasklet {
|
||||
aciDlivyMapper.insertGoodsExportLog(exportLogMap);
|
||||
}
|
||||
|
||||
// gc_order_shipping 상태 UPDATE (모든 item_option 처리 완료 후 일괄)
|
||||
// ⑥ gc_order_shipping 상태 UPDATE (모든 item_option 처리 완료 후 일괄)
|
||||
aciDlivyMapper.updateOrderShippingStatus(orderVO);
|
||||
|
||||
// gc_order 상태 UPDATE (모든 shipping 처리 완료 후 일괄)
|
||||
// ⑦ gc_order 상태 UPDATE (모든 shipping 처리 완료 후 일괄)
|
||||
aciDlivyMapper.updateOrderStatus(orderVO);
|
||||
|
||||
// 주문 로그 INSERT
|
||||
// ⑧ 주문 로그 INSERT
|
||||
DataMap orderLogMap = new DataMap();
|
||||
orderLogMap.put("ordrInnb", orderVO.getOrdrInnb());
|
||||
orderLogMap.put("sopmalCd", orderVO.getSopmalCd());
|
||||
orderLogMap.put("logSj", "출고처리(" + dlivyCdNb + ")");
|
||||
orderLogMap.put("logDtlCn", "[ACI 배치] 배치 출고처리 완료");
|
||||
orderLogMap.put("aditInfoCn", null);
|
||||
orderLogMap.put("dlivyCdNb", dlivyCdNb);
|
||||
orderLogMap.put("refundCdNb", null);
|
||||
orderLogMap.put("logDvCd", "01");
|
||||
orderLogMap.put("dvCd", "BATCH");
|
||||
orderLogMap.put("opetrNm", "ACI 배치");
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.wb.domainserver.acidlivy.AciDlivyMapper">
|
||||
|
||||
<!-- ?? ?? ???? ?? ?? (ORDR_STTUS_CD = '35' ?????) -->
|
||||
<!-- 출고 대상 주문 목록 조회 (ORDR_STTUS_CD = '35' 상품준비중) -->
|
||||
<select id="selectAciDlivyTargetList" resultType="com.wb.domainserver.acidlivy.AciDlivyOrderVO">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
@@ -17,8 +17,8 @@
|
||||
</select>
|
||||
|
||||
|
||||
<!-- ?? ?? ?????? ?? ?? -->
|
||||
<!-- QY: ????(35)? ?????? ??, ?? ??/????/?? ?? ?? -->
|
||||
<!-- 출고 대상 주문상품 옵션 조회 -->
|
||||
<!-- QY: 반품(85)을 제외한 미출고 수량, 출고 아이템/로그/상태 처리 기준 -->
|
||||
<select id="selectAciDlivyTargetItemList"
|
||||
parameterType="com.wb.domainserver.acidlivy.AciDlivyOrderVO"
|
||||
resultType="dataMap">
|
||||
@@ -39,7 +39,7 @@
|
||||
</select>
|
||||
|
||||
|
||||
<!-- gc_goods_export ?? ?? -->
|
||||
<!-- gc_goods_export 존재 여부 -->
|
||||
<select id="selectGoodsExportCount"
|
||||
parameterType="com.wb.domainserver.acidlivy.AciDlivyOrderVO"
|
||||
resultType="int">
|
||||
@@ -55,7 +55,8 @@
|
||||
|
||||
|
||||
<!-- gc_goods_export INSERT -->
|
||||
<!-- DLIVY_CD_NB: 'D' + yyMMddHH + DLIVY_INNB, HDRYCPN_CD: code22 ??, INVCNB: ACI BLNO -->
|
||||
<!-- DLIVY_CD_NB: Java에서 생성한 dlivyCdNb로 받음 (insertGoodsExport 후 updateGoodsExportDlivyCdNb로 SET) -->
|
||||
<!-- HDRYCPN_CD: code22 고정, INVCNB: ACI BLNO -->
|
||||
<insert id="insertGoodsExport"
|
||||
parameterType="com.wb.domainserver.acidlivy.AciDlivyOrderVO">
|
||||
|
||||
@@ -84,7 +85,7 @@
|
||||
#{sopmalCd},
|
||||
#{ordrInnb},
|
||||
#{ordrDlvyInnb},
|
||||
CONCAT('D', DATE_FORMAT(SYSDATE(), '%y%m%d%H'), #{dlivyInnb}),
|
||||
#{dlivyCdNb},
|
||||
#{dlivySttusCd},
|
||||
SYSDATE(),
|
||||
#{hdrycpnCd},
|
||||
@@ -99,8 +100,21 @@
|
||||
</insert>
|
||||
|
||||
|
||||
<!-- gc_goods_export UPDATE (?? ???? ??) -->
|
||||
<!-- selectKey ? ?? DLIVY_INNB ???? dlivyInnb ? ?? -->
|
||||
<!-- gc_goods_export DLIVY_CD_NB UPDATE -->
|
||||
<!-- INSERT 경로에서 dlivyCdNb 생성 후 호출하여 DLIVY_CD_NB 설정 -->
|
||||
<update id="updateGoodsExportDlivyCdNb"
|
||||
parameterType="com.wb.domainserver.acidlivy.AciDlivyOrderVO">
|
||||
<![CDATA[
|
||||
UPDATE GC_GOODS_EXPORT SET
|
||||
DLIVY_CD_NB = #{dlivyCdNb},
|
||||
UPDT_DT = SYSDATE()
|
||||
WHERE DLIVY_INNB = #{dlivyInnb}
|
||||
]]>
|
||||
</update>
|
||||
|
||||
|
||||
<!-- gc_goods_export UPDATE (기존 레코드 있음) -->
|
||||
<!-- selectKey로 기존 DLIVY_INNB 조회하여 dlivyInnb 세팅 -->
|
||||
<update id="updateGoodsExport"
|
||||
parameterType="com.wb.domainserver.acidlivy.AciDlivyOrderVO">
|
||||
|
||||
@@ -129,7 +143,7 @@
|
||||
</update>
|
||||
|
||||
|
||||
<!-- gc_goods_export_item ?? ?? -->
|
||||
<!-- gc_goods_export_item 존재 여부 -->
|
||||
<select id="selectGoodsExportItemCount"
|
||||
parameterType="dataMap"
|
||||
resultType="int">
|
||||
@@ -179,7 +193,7 @@
|
||||
</insert>
|
||||
|
||||
|
||||
<!-- gc_goods_export_item UPDATE (?? ???? ??) -->
|
||||
<!-- gc_goods_export_item UPDATE (기존 레코드 있음) -->
|
||||
<update id="updateGoodsExportItem" parameterType="dataMap">
|
||||
<![CDATA[
|
||||
UPDATE GC_GOODS_EXPORT_ITEM SET
|
||||
@@ -192,8 +206,8 @@
|
||||
</update>
|
||||
|
||||
|
||||
<!-- gc_order_item_option ?? UPDATE -->
|
||||
<!-- ORDR_STTUS_CD: ????(50) ?? ????(55), STEP55 = ????, STEP45 = 0 -->
|
||||
<!-- gc_order_item_option 상태 UPDATE -->
|
||||
<!-- ORDR_STTUS_CD: 부분출고(50) 또는 출고완료(55), STEP55 = 출고수량, STEP45 = 0 -->
|
||||
<update id="updateOrderItemOptionStatus" parameterType="dataMap">
|
||||
<![CDATA[
|
||||
UPDATE GC_ORDER_ITEM_OPTION SET
|
||||
@@ -212,8 +226,8 @@
|
||||
</update>
|
||||
|
||||
|
||||
<!-- gc_order_shipping ?? UPDATE -->
|
||||
<!-- ????? ?? item_option ??/?? ???? ?? ?? (?? updateBOOrdrDlvyStatusUpdt6575 ?? ??) -->
|
||||
<!-- gc_order_shipping 상태 UPDATE -->
|
||||
<!-- 하위의 모든 item_option 상태/수량 기준으로 동적 결정 (기존 updateBOOrdrDlvyStatusUpdt6575 참고) -->
|
||||
<update id="updateOrderShippingStatus"
|
||||
parameterType="com.wb.domainserver.acidlivy.AciDlivyOrderVO">
|
||||
<![CDATA[
|
||||
@@ -248,8 +262,8 @@
|
||||
</update>
|
||||
|
||||
|
||||
<!-- gc_order ?? UPDATE -->
|
||||
<!-- ????? ?? shipping ??/?? ???? ?? ?? (?? updateBOOrdrStatusUpdt6575 ?? ??) -->
|
||||
<!-- gc_order 상태 UPDATE -->
|
||||
<!-- 하위의 모든 shipping 상태 기준으로 동적 결정 (기존 updateBOOrdrStatusUpdt6575 참고) -->
|
||||
<update id="updateOrderStatus"
|
||||
parameterType="com.wb.domainserver.acidlivy.AciDlivyOrderVO">
|
||||
<![CDATA[
|
||||
@@ -353,4 +367,4 @@
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
</mapper>
|
||||
</mapper>
|
||||
|
||||
Reference in New Issue
Block a user