Compare commits

..

19 Commits

Author SHA1 Message Date
이주일
dc77dfd5f0 Merge remote-tracking branch 'private/dev' into dev 2026-05-26 18:23:37 +09:00
이주일
88db1cc9f5 fix: insertOrderLog DLIVY_INNB 파라미터 수정 (dlivyCdNb → dlivyInnb) 2026-05-26 18:20:35 +09:00
이주일
1e8ea795d8 Merge remote-tracking branch 'private/dev' into dev 2026-05-26 16:18:47 +09:00
claudecode
9b4ba72134 refactor: AciDlivyMapper mapper.gcone 이동, XML gcone 이동, GconeSourceConfig 정리, AciDlivyVO 삭제 2026-05-26 16:12:00 +09:00
이주일
9b98beb95a Merge branch 'dev' of http://115.68.207.90:3690/jilee1202/sake_private into dev 2026-05-26 14:51:22 +09:00
claudecode
5b4771b0c7 fix: AciDlivyMapper.xml namespace 수정 (acidlivy → acidlivy.tasklet) 2026-05-26 14:43:36 +09:00
이주일
c6b6e614b0 Merge branch 'dev' of http://115.68.207.90:3690/jilee1202/sake_private into dev 2026-05-26 14:37:19 +09:00
claudecode
aeabfd4af1 fix: AciDlivyMapper.xml AciDlivyOrderVO 클래스 경로 수정 (acidlivy → acidlivy.vo) 2026-05-26 14:16:25 +09:00
이주일
5574c9cfcf Merge branch 'dev' of http://115.68.207.90:3690/jilee1202/sake_private 2026-05-26 13:40:39 +09:00
claudecode
75feae6505 fix: AciDlivyJobConfig JobBuilder/StepBuilder 이름 문자열 따옴표 누락 수정 2026-05-26 13:34:26 +09:00
claudecode
c9b69251bc refactor: acidlivy 패키지 구조 리팩토링 (jobs/tasklet/vo) 및 한글 주석 UTF-8 수정 2026-05-26 13:08:54 +09:00
claudecode
1d278bca48 fix: gc_goods_export DLIVY_INNB 오류 수정 - ORDR_DLVY_INNB 사용, dlivyCdNb INSERT 전 생성 2026-05-26 11:59:26 +09:00
이주일
2a3cf05c09 Merge branch 'dev' of http://115.68.207.90:3690/jilee1202/sake_private
 Conflicts:
	src/main/resources/application-dev.yaml
2026-05-26 11:31:16 +09:00
6ae3b3cf6a Update src/main/resources/application-dev.yaml 2026-05-22 23:38:57 +09:00
Claude
9bd064bea2 DEPLOY_FILE/BACKUP_FILE APP_NAME ?? ??? ?? 2026-05-22 19:50:00 +09:00
Claude
688e840fd0 Merge dev: APP_NAME gcone_batch? ?? ? ?? ?? 2026-05-22 19:41:57 +09:00
Claude Code
d8f88245e9 Merge dev into master: SSH_KEY_PATH ??? 2026-05-22 19:34:02 +09:00
Claude Code
c45536969d Merge dev into master: SERVER_IP ????? ?? 2026-05-22 19:29:18 +09:00
Claude Code
d9b547644d Merge dev into master: sshCommand ???? Jenkinsfile ?? 2026-05-22 19:14:23 +09:00
8 changed files with 58 additions and 88 deletions

View File

@@ -1,26 +0,0 @@
package com.wb.domainserver.acidlivy;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
// DB ?? ?? ?? ???? ?? + ??? ??
@Getter
@Setter
@ToString
public class AciDlivyOrderVO {
// DB ?? ?? (gc_order_shipping)
private String ordrDlvyInnb; // ???????? (ACI OverseaSellerNo ???)
private String ordrInnb; // ???? (API orderNumber ????)
private String sopmalCd; // ?????
// ACI API ?? ? ??
private String blno; // ACI ????? (BLNO)
// ???? ? ??
private String hdrycpnCd; // ????? (???: code22)
private String dlivySttusCd; // ?????? (???: 55)
private String dlivyInnb; // ?????? (insertGoodsExport ? selectKey? ??)
private String dlivyCdNb; // ?????? (dlivyInnb ?? ? Java?? ??)
}

View File

@@ -1,14 +0,0 @@
package com.wb.domainserver.acidlivy;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
// ACI API ???? ??? Data ?? (BLNO, OverseaSellerNo)
@Getter
@Setter
@ToString
public class AciDlivyVO {
private String blno; // ACI ?????
private String overseaSellerNo; // ????? ???? (= ORDR_DLVY_INNB)
}

View File

@@ -1,5 +1,7 @@
package com.wb.domainserver.acidlivy;
package com.wb.domainserver.acidlivy.jobs;
import com.wb.domainserver.acidlivy.tasklet.AciDlivyTasklet;
import lombok.RequiredArgsConstructor;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.job.builder.JobBuilder;
@@ -8,9 +10,8 @@ import org.springframework.batch.core.step.builder.StepBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.PlatformTransactionManager;
import lombok.RequiredArgsConstructor;
// ACI ???? ?? ? ???? ?? Job/Step ??
// ACI 배송자료 조회 및 출고처리 배치 Job/Step 설정
@Configuration
@RequiredArgsConstructor
public class AciDlivyJobConfig {
@@ -32,4 +33,4 @@ public class AciDlivyJobConfig {
.tasklet(aciDlivyTasklet, transactionManager)
.build();
}
}
}

View File

@@ -1,6 +1,8 @@
package com.wb.domainserver.acidlivy;
package com.wb.domainserver.acidlivy.tasklet;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.wb.domainserver.acidlivy.vo.AciDlivyOrderVO;
import com.wb.domainserver.mapper.gcone.AciDlivyMapper;
import com.wb.domainserver.util.dataaccess.DataMap;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -238,7 +240,14 @@ public class AciDlivyTasklet implements Tasklet {
}
log.debug("[AciDlivyBatch] 주문 상품 옵션 수={} (ORDR_DLVY_INNB={})", itemList.size(), orderVO.getOrdrDlvyInnb());
// ② gc_goods_export 처리 (selectKey로 dlivyInnb 채번)
// ② 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 직접 포함)
int exportCnt = aciDlivyMapper.selectGoodsExportCount(orderVO);
if (exportCnt > 0) {
aciDlivyMapper.updateGoodsExport(orderVO);
@@ -246,15 +255,6 @@ public class AciDlivyTasklet implements Tasklet {
aciDlivyMapper.insertGoodsExport(orderVO);
}
// ③ dlivyCdNb 생성 (insertGoodsExport 실행 후, dlivyInnb 채번 완료 후)
String dlivyCdNb = "D" + new SimpleDateFormat("yyMMddHH").format(new Date()) + orderVO.getDlivyInnb();
orderVO.setDlivyCdNb(dlivyCdNb);
// ④ 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");
@@ -312,7 +312,7 @@ public class AciDlivyTasklet implements Tasklet {
orderLogMap.put("logSj", "출고처리(" + dlivyCdNb + ")");
orderLogMap.put("logDtlCn", "[ACI 배치] 배치 출고처리 완료");
orderLogMap.put("aditInfoCn", null);
orderLogMap.put("dlivyCdNb", dlivyCdNb);
orderLogMap.put("dlivyInnb", orderVO.getDlivyInnb());
orderLogMap.put("refundCdNb", null);
orderLogMap.put("logDvCd", "01");
orderLogMap.put("dvCd", "BATCH");

View File

@@ -0,0 +1,24 @@
package com.wb.domainserver.acidlivy.vo;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
// gc_order_shipping 조회 결과 및 ACI 출고처리 배치 복합 VO
@Getter
@Setter
@ToString
public class AciDlivyOrderVO {
// gc_order_shipping 조회 결과
private String ordrDlvyInnb; // 주문배송고유번호 (ACI OverseaSellerNo 매칭기준)
private String ordrInnb; // 주문번호 (API orderNumber 파라미터)
private String sopmalCd; // 쇼핑몰코드
// ACI API 조회 및 처리
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에서 생성)
}

View File

@@ -30,8 +30,7 @@ import java.util.List;
@EnableTransactionManagement
@MapperScan(
basePackages = {
"com.wb.domainserver.mapper.gcone",
"com.wb.domainserver.acidlivy"
"com.wb.domainserver.mapper.gcone"
},
sqlSessionFactoryRef = "gconeSqlSessionFactory"
)
@@ -60,7 +59,6 @@ public class GconeSourceConfig {
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
List<Resource> mapperLocations = new ArrayList<>();
mapperLocations.addAll(Arrays.asList(resolver.getResources("classpath*:mybatis/xml/mapper/gcone/**/*.xml")));
mapperLocations.addAll(Arrays.asList(resolver.getResources("classpath*:mybatis/xml/mapper/acidlivy/**/*.xml")));
sessionFactory.setMapperLocations(mapperLocations.toArray(new Resource[0]));
sessionFactory.setConfigLocation(new PathMatchingResourcePatternResolver().getResource("classpath:mybatis/xml/config/mapper-config.xml"));

View File

@@ -1,5 +1,6 @@
package com.wb.domainserver.acidlivy;
package com.wb.domainserver.mapper.gcone;
import com.wb.domainserver.acidlivy.vo.AciDlivyOrderVO;
import com.wb.domainserver.util.dataaccess.DataMap;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@@ -25,7 +26,7 @@ public interface AciDlivyMapper {
/** gc_goods_export UPDATE (기존 레코드 있음) */
int updateGoodsExport(AciDlivyOrderVO vo);
/** gc_goods_export DLIVY_CD_NB UPDATE (INSERT 경로에서 dlivyCdNb 생성 후 호출) */
/** gc_goods_export DLIVY_CD_NB UPDATE (미사용 - dlivyCdNb는 INSERT 전 Java에서 생성) */
int updateGoodsExportDlivyCdNb(AciDlivyOrderVO vo);
/** gc_goods_export_item 존재 여부 */

View File

@@ -1,9 +1,9 @@
<?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">
<mapper namespace="com.wb.domainserver.mapper.gcone.AciDlivyMapper">
<!-- 출고 대상 주문 목록 조회 (ORDR_STTUS_CD = '35' 상품준비중) -->
<select id="selectAciDlivyTargetList" resultType="com.wb.domainserver.acidlivy.AciDlivyOrderVO">
<select id="selectAciDlivyTargetList" resultType="com.wb.domainserver.acidlivy.vo.AciDlivyOrderVO">
<![CDATA[
SELECT
ORDR_DLVY_INNB,
@@ -20,7 +20,7 @@
<!-- 출고 대상 주문상품 옵션 조회 -->
<!-- QY: 반품(85)을 제외한 미출고 수량, 출고 아이템/로그/상태 처리 기준 -->
<select id="selectAciDlivyTargetItemList"
parameterType="com.wb.domainserver.acidlivy.AciDlivyOrderVO"
parameterType="com.wb.domainserver.acidlivy.vo.AciDlivyOrderVO"
resultType="dataMap">
<![CDATA[
SELECT
@@ -41,7 +41,7 @@
<!-- gc_goods_export 존재 여부 -->
<select id="selectGoodsExportCount"
parameterType="com.wb.domainserver.acidlivy.AciDlivyOrderVO"
parameterType="com.wb.domainserver.acidlivy.vo.AciDlivyOrderVO"
resultType="int">
<![CDATA[
SELECT COUNT(1)
@@ -55,14 +55,11 @@
<!-- gc_goods_export INSERT -->
<!-- DLIVY_CD_NB: Java에서 생성한 dlivyCdNb로 받음 (insertGoodsExport 후 updateGoodsExportDlivyCdNb로 SET) -->
<!-- DLIVY_INNB: gc_order_shipping.ORDR_DLVY_INNB 값 사용 (Java에서 dlivyInnb = ordrDlvyInnb 세팅 후 전달) -->
<!-- DLIVY_CD_NB: Java에서 생성한 dlivyCdNb 직접 포함 (INSERT 전 생성) -->
<!-- HDRYCPN_CD: code22 고정, INVCNB: ACI BLNO -->
<insert id="insertGoodsExport"
parameterType="com.wb.domainserver.acidlivy.AciDlivyOrderVO">
<selectKey order="BEFORE" keyProperty="dlivyInnb" resultType="java.lang.String">
SELECT IFNULL(MAX(DLIVY_INNB), 0) + 1 FROM GC_GOODS_EXPORT
</selectKey>
parameterType="com.wb.domainserver.acidlivy.vo.AciDlivyOrderVO">
<![CDATA[
INSERT INTO GC_GOODS_EXPORT (
@@ -103,7 +100,7 @@
<!-- gc_goods_export DLIVY_CD_NB UPDATE -->
<!-- INSERT 경로에서 dlivyCdNb 생성 후 호출하여 DLIVY_CD_NB 설정 -->
<update id="updateGoodsExportDlivyCdNb"
parameterType="com.wb.domainserver.acidlivy.AciDlivyOrderVO">
parameterType="com.wb.domainserver.acidlivy.vo.AciDlivyOrderVO">
<![CDATA[
UPDATE GC_GOODS_EXPORT SET
DLIVY_CD_NB = #{dlivyCdNb},
@@ -114,20 +111,9 @@
<!-- gc_goods_export UPDATE (기존 레코드 있음) -->
<!-- selectKey로 기존 DLIVY_INNB 조회하여 dlivyInnb 세팅 -->
<!-- gc_goods_export UPDATE (기존 레코드 있음, dlivyInnb = ordrDlvyInnb Java 세팅) -->
<update id="updateGoodsExport"
parameterType="com.wb.domainserver.acidlivy.AciDlivyOrderVO">
<selectKey order="BEFORE" keyProperty="dlivyInnb" resultType="java.lang.String">
<![CDATA[
SELECT MAX(DLIVY_INNB)
FROM GC_GOODS_EXPORT
WHERE SOPMAL_CD = #{sopmalCd}
AND ORDR_INNB = #{ordrInnb}
AND ORDR_DLVY_INNB = #{ordrDlvyInnb}
AND HDRYCPN_CD = #{hdrycpnCd}
]]>
</selectKey>
parameterType="com.wb.domainserver.acidlivy.vo.AciDlivyOrderVO">
<![CDATA[
UPDATE GC_GOODS_EXPORT SET
@@ -229,7 +215,7 @@
<!-- gc_order_shipping 상태 UPDATE -->
<!-- 하위의 모든 item_option 상태/수량 기준으로 동적 결정 (기존 updateBOOrdrDlvyStatusUpdt6575 참고) -->
<update id="updateOrderShippingStatus"
parameterType="com.wb.domainserver.acidlivy.AciDlivyOrderVO">
parameterType="com.wb.domainserver.acidlivy.vo.AciDlivyOrderVO">
<![CDATA[
UPDATE GC_ORDER_SHIPPING SH,
(
@@ -265,7 +251,7 @@
<!-- gc_order 상태 UPDATE -->
<!-- 하위의 모든 shipping 상태 기준으로 동적 결정 (기존 updateBOOrdrStatusUpdt6575 참고) -->
<update id="updateOrderStatus"
parameterType="com.wb.domainserver.acidlivy.AciDlivyOrderVO">
parameterType="com.wb.domainserver.acidlivy.vo.AciDlivyOrderVO">
<![CDATA[
UPDATE GC_ORDER O,
(
@@ -355,7 +341,7 @@
#{logSj},
#{logDtlCn},
#{aditInfoCn},
#{dlivyCdNb},
#{dlivyInnb},
#{refundCdNb},
#{logDvCd},
#{dvCd},