[TASK_BATCH_ACIDLIVY] ACI 배송자료 조회 및 출고처리 배치 신규 생성 - AciDlivyJobConfig/Tasklet/Mapper/VO 생성, application-dev.yaml aci.dlivy.api-url 추가
This commit is contained in:
34
shell/aciDlivyJob_run.sh
Executable file
34
shell/aciDlivyJob_run.sh
Executable file
@@ -0,0 +1,34 @@
|
||||
#!/bin/sh
|
||||
|
||||
JOB_NAME="aciDlivyJob"
|
||||
HOST="10.2.1.76"
|
||||
PORT="18211"
|
||||
|
||||
LOG_DIR="/home/batch_shell/logs"
|
||||
LOG_FILE="${LOG_DIR}/${JOB_NAME}_$(date +%Y%m%d).log"
|
||||
|
||||
mkdir -p ${LOG_DIR}
|
||||
|
||||
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
|
||||
echo "[${TIMESTAMP}] ===== ${JOB_NAME} 실행 시작 =====" >> ${LOG_FILE}
|
||||
|
||||
HTTP_CODE=$(curl -s -o /tmp/${JOB_NAME}_resp.tmp -w "%{http_code}" \
|
||||
-X POST "http://${HOST}:${PORT}/gcone_batch/batch/run/${JOB_NAME}" \
|
||||
-H "Content-Type: application/json")
|
||||
|
||||
BODY=$(cat /tmp/${JOB_NAME}_resp.tmp 2>/dev/null)
|
||||
rm -f /tmp/${JOB_NAME}_resp.tmp
|
||||
|
||||
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
|
||||
echo "[${TIMESTAMP}] HTTP Status: ${HTTP_CODE}" >> ${LOG_FILE}
|
||||
echo "[${TIMESTAMP}] Response : ${BODY}" >> ${LOG_FILE}
|
||||
|
||||
if [ "${HTTP_CODE}" = "200" ]; then
|
||||
echo "[${TIMESTAMP}] ${JOB_NAME} 실행 성공" >> ${LOG_FILE}
|
||||
echo "Batch job ${JOB_NAME} executed successfully."
|
||||
else
|
||||
echo "[${TIMESTAMP}] ${JOB_NAME} 실행 실패 (HTTP ${HTTP_CODE})" >> ${LOG_FILE}
|
||||
echo "Failed to execute batch job ${JOB_NAME}. HTTP Status: ${HTTP_CODE}"
|
||||
fi
|
||||
|
||||
echo "[${TIMESTAMP}] ===== ${JOB_NAME} 실행 완료 =====" >> ${LOG_FILE}
|
||||
@@ -0,0 +1,35 @@
|
||||
package com.wb.domainserver.acidlivy;
|
||||
|
||||
import org.springframework.batch.core.Job;
|
||||
import org.springframework.batch.core.Step;
|
||||
import org.springframework.batch.core.job.builder.JobBuilder;
|
||||
import org.springframework.batch.core.repository.JobRepository;
|
||||
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 ??
|
||||
@Configuration
|
||||
@RequiredArgsConstructor
|
||||
public class AciDlivyJobConfig {
|
||||
|
||||
private final JobRepository jobRepository;
|
||||
private final PlatformTransactionManager transactionManager;
|
||||
private final AciDlivyTasklet aciDlivyTasklet;
|
||||
|
||||
@Bean
|
||||
public Job aciDlivyJob() {
|
||||
return new JobBuilder("aciDlivyJob", jobRepository)
|
||||
.start(aciDlivyStep())
|
||||
.build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Step aciDlivyStep() {
|
||||
return new StepBuilder("aciDlivyStep", jobRepository)
|
||||
.tasklet(aciDlivyTasklet, transactionManager)
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
package com.wb.domainserver.acidlivy;
|
||||
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Mapper
|
||||
@Repository
|
||||
public interface AciDlivyMapper {
|
||||
|
||||
/** ?? ?? ???? ?? ?? (gc_order_shipping.ORDR_STTUS_CD = '35') */
|
||||
List<AciDlivyOrderVO> selectAciDlivyTargetList();
|
||||
|
||||
/** ?? ?? ?????? ?? ?? (gc_order_item_option) */
|
||||
List<DataMap> selectAciDlivyTargetItemList(AciDlivyOrderVO vo);
|
||||
|
||||
/** gc_goods_export ?? ?? */
|
||||
int selectGoodsExportCount(AciDlivyOrderVO vo);
|
||||
|
||||
/** gc_goods_export INSERT */
|
||||
int insertGoodsExport(AciDlivyOrderVO vo);
|
||||
|
||||
/** gc_goods_export UPDATE (?? ???? ??) */
|
||||
int updateGoodsExport(AciDlivyOrderVO vo);
|
||||
|
||||
/** gc_goods_export_item ?? ?? */
|
||||
int selectGoodsExportItemCount(DataMap itemMap);
|
||||
|
||||
/** gc_goods_export_item INSERT */
|
||||
int insertGoodsExportItem(DataMap itemMap);
|
||||
|
||||
/** gc_goods_export_item UPDATE (?? ???? ??) */
|
||||
int updateGoodsExportItem(DataMap itemMap);
|
||||
|
||||
/** gc_order_item_option ?? UPDATE */
|
||||
int updateOrderItemOptionStatus(DataMap itemMap);
|
||||
|
||||
/** gc_order_shipping ?? UPDATE (?? item_option ?? ???? ?? ??) */
|
||||
int updateOrderShippingStatus(AciDlivyOrderVO vo);
|
||||
|
||||
/** gc_order ?? UPDATE (?? shipping ?? ???? ?? ??) */
|
||||
int updateOrderStatus(AciDlivyOrderVO vo);
|
||||
|
||||
/** GC_GOODS_EXPORT_LOG INSERT */
|
||||
int insertGoodsExportLog(DataMap logMap);
|
||||
|
||||
/** GC_ORDER_LOG INSERT */
|
||||
int insertOrderLog(DataMap logMap);
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
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?? ??)
|
||||
}
|
||||
263
src/main/java/com/wb/domainserver/acidlivy/AciDlivyTasklet.java
Normal file
263
src/main/java/com/wb/domainserver/acidlivy/AciDlivyTasklet.java
Normal file
@@ -0,0 +1,263 @@
|
||||
package com.wb.domainserver.acidlivy;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.batch.core.StepContribution;
|
||||
import org.springframework.batch.core.scope.context.ChunkContext;
|
||||
import org.springframework.batch.core.step.tasklet.Tasklet;
|
||||
import org.springframework.batch.repeat.RepeatStatus;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.http.*;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
import org.springframework.transaction.TransactionDefinition;
|
||||
import org.springframework.transaction.support.TransactionTemplate;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
// ACI ???? ?? ? ???? ?? Tasklet
|
||||
// ????: gc_order_shipping(ORDR_STTUS_CD=35) ?? ? ACI API ?? ? BLNO ?? ? ????
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class AciDlivyTasklet implements Tasklet {
|
||||
|
||||
private final AciDlivyMapper aciDlivyMapper;
|
||||
private final PlatformTransactionManager transactionManager;
|
||||
|
||||
@Value("${aci.dlivy.api-url}")
|
||||
private String aciDlivyApiUrl;
|
||||
|
||||
@Value("${acikey.userid}")
|
||||
private String userId;
|
||||
|
||||
@Value("${acikey.apikey}")
|
||||
private String apiKey;
|
||||
|
||||
private static final String HDRYCPN_CD = "code22"; // ACI ????? ??
|
||||
private static final String DLIVY_STTUS_CD = "55"; // ???? ??
|
||||
|
||||
@Override
|
||||
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) {
|
||||
log.info("[AciDlivyBatch] ?? ??");
|
||||
|
||||
// ? ?? ?? ?? (ORDR_STTUS_CD = '35')
|
||||
List<AciDlivyOrderVO> targetList = aciDlivyMapper.selectAciDlivyTargetList();
|
||||
log.info("[AciDlivyBatch] ?? ?? ??: {}", targetList.size());
|
||||
|
||||
if (targetList.isEmpty()) {
|
||||
log.info("[AciDlivyBatch] ??? ?? ??? ????.");
|
||||
return RepeatStatus.FINISHED;
|
||||
}
|
||||
|
||||
int successCnt = 0;
|
||||
int failCnt = 0;
|
||||
int skipCnt = 0;
|
||||
|
||||
// ???? ?? ???? (REQUIRES_NEW) ? ? ? ??? ?? ?? ?? ???
|
||||
TransactionTemplate txTemplate = new TransactionTemplate(transactionManager);
|
||||
txTemplate.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
|
||||
|
||||
for (AciDlivyOrderVO orderVO : targetList) {
|
||||
try {
|
||||
// ? ACI ???? API ?? ? BLNO ??
|
||||
String blno = callAciDlivyApi(orderVO);
|
||||
|
||||
if (blno == null) {
|
||||
log.info("[AciDlivyBatch] ?? - ORDR_DLVY_INNB={}, ORDR_INNB={} (BLNO ?? ?? ?? ??)",
|
||||
orderVO.getOrdrDlvyInnb(), orderVO.getOrdrInnb());
|
||||
skipCnt++;
|
||||
} else {
|
||||
orderVO.setBlno(blno);
|
||||
orderVO.setHdrycpnCd(HDRYCPN_CD);
|
||||
orderVO.setDlivySttusCd(DLIVY_STTUS_CD);
|
||||
|
||||
// ? ???? (?? ????)
|
||||
txTemplate.execute(status -> {
|
||||
processDelivery(orderVO);
|
||||
return null;
|
||||
});
|
||||
|
||||
successCnt++;
|
||||
log.info("[AciDlivyBatch] ???? ?? - ORDR_DLVY_INNB={}, BLNO={}",
|
||||
orderVO.getOrdrDlvyInnb(), blno);
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("[AciDlivyBatch] ???? ?? - ORDR_DLVY_INNB={}, ??={}",
|
||||
orderVO.getOrdrDlvyInnb(), e.getMessage(), e);
|
||||
failCnt++;
|
||||
}
|
||||
|
||||
// ? API ?? ?? ?? (?? 10? ? 1? ??)
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException ie) {
|
||||
Thread.currentThread().interrupt();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
log.info("[AciDlivyBatch] ?? ?? - ??: {}, ??: {}, ??: {}", successCnt, failCnt, skipCnt);
|
||||
return RepeatStatus.FINISHED;
|
||||
}
|
||||
|
||||
/**
|
||||
* ACI ???? API ??
|
||||
* Content-Type? text/html? ?? ??? JSON ? String ?? ? ObjectMapper ??
|
||||
* @return BLNO(?????), ??? null
|
||||
*/
|
||||
private String callAciDlivyApi(AciDlivyOrderVO orderVO) {
|
||||
try {
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.set("UserID", userId);
|
||||
headers.set("ACIKey", apiKey);
|
||||
|
||||
String url = aciDlivyApiUrl + "?searchType=1&orderNumber=" + orderVO.getOrdrInnb();
|
||||
HttpEntity<Void> entity = new HttpEntity<>(headers);
|
||||
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
|
||||
|
||||
log.debug("[AciDlivyBatch] API ?? ?? (ORDR_INNB={}): {}", orderVO.getOrdrInnb(), response.getBody());
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
Map<String, Object> body = objectMapper.readValue(response.getBody(), Map.class);
|
||||
|
||||
String status = (String) body.get("Status");
|
||||
log.debug("[AciDlivyBatch] API Status={} (ORDR_INNB={})", status, orderVO.getOrdrInnb());
|
||||
|
||||
// ??/????? ?? ?? (?? Status?? ??? ?? ? ???? ?? ?? ??)
|
||||
if (!"A10".equals(status)) {
|
||||
log.info("[AciDlivyBatch] API ??? ?? - ORDR_INNB={}, Status={}", orderVO.getOrdrInnb(), status);
|
||||
return null;
|
||||
}
|
||||
|
||||
// Data ?? (?? Map ?? List<Map> ?? ??)
|
||||
Object dataObj = body.get("Data");
|
||||
if (dataObj == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
List<Map<String, Object>> dataList;
|
||||
if (dataObj instanceof List) {
|
||||
dataList = (List<Map<String, Object>>) dataObj;
|
||||
} else if (dataObj instanceof Map) {
|
||||
dataList = List.of((Map<String, Object>) dataObj);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
||||
// OverseaSellerNo == ORDR_DLVY_INNB ?? ? BLNO ??
|
||||
for (Map<String, Object> item : dataList) {
|
||||
Object sellerNo = item.get("OverseaSellerNo");
|
||||
if (sellerNo != null && orderVO.getOrdrDlvyInnb().equals(String.valueOf(sellerNo).trim())) {
|
||||
Object blno = item.get("BLNO");
|
||||
if (blno != null && !String.valueOf(blno).isBlank()) {
|
||||
return String.valueOf(blno).trim();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
log.info("[AciDlivyBatch] OverseaSellerNo ?? ?? - ORDR_DLVY_INNB={}", orderVO.getOrdrDlvyInnb());
|
||||
return null;
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("[AciDlivyBatch] API ?? ?? - ORDR_INNB={}, ??={}", orderVO.getOrdrInnb(), e.getMessage(), e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* ???? (??: gc_goods_export ? gc_goods_export_item ? gc_order_item_option
|
||||
* ? gc_order_shipping ? gc_order ? ???? ? ????)
|
||||
* gc_order_shipping/gc_order ????? ?? ??? ?? ???? ?? ??
|
||||
*/
|
||||
private void processDelivery(AciDlivyOrderVO orderVO) {
|
||||
|
||||
// ? gc_goods_export ??
|
||||
int exportCnt = aciDlivyMapper.selectGoodsExportCount(orderVO);
|
||||
if (exportCnt > 0) {
|
||||
aciDlivyMapper.updateGoodsExport(orderVO); // selectKey? dlivyInnb ???
|
||||
} else {
|
||||
aciDlivyMapper.insertGoodsExport(orderVO); // selectKey? dlivyInnb ???
|
||||
}
|
||||
|
||||
// dlivyCdNb ?? (GC_GOODS_EXPORT ? DLIVY_CD_NB ??? ?? ??)
|
||||
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());
|
||||
|
||||
for (DataMap itemMap : itemList) {
|
||||
Object qyObj = itemMap.get("qy");
|
||||
if (qyObj == null) continue;
|
||||
int qy;
|
||||
try {
|
||||
qy = Integer.parseInt(String.valueOf(qyObj));
|
||||
} catch (NumberFormatException e) {
|
||||
continue;
|
||||
}
|
||||
if (qy <= 0) continue;
|
||||
|
||||
itemMap.put("sopmalCd", orderVO.getSopmalCd());
|
||||
itemMap.put("ordrDlvyInnb", orderVO.getOrdrDlvyInnb());
|
||||
itemMap.put("dlivyInnb", orderVO.getDlivyInnb());
|
||||
itemMap.put("ordrInnb", orderVO.getOrdrInnb());
|
||||
itemMap.put("hdrycpnCd", HDRYCPN_CD);
|
||||
itemMap.put("invcnb", orderVO.getBlno());
|
||||
itemMap.put("dlivySttusCd", DLIVY_STTUS_CD);
|
||||
|
||||
// ? gc_goods_export_item ??
|
||||
int exportItemCnt = aciDlivyMapper.selectGoodsExportItemCount(itemMap);
|
||||
if (exportItemCnt > 0) {
|
||||
aciDlivyMapper.updateGoodsExportItem(itemMap);
|
||||
} else {
|
||||
aciDlivyMapper.insertGoodsExportItem(itemMap);
|
||||
}
|
||||
|
||||
// ? gc_order_item_option ?? UPDATE
|
||||
aciDlivyMapper.updateOrderItemOptionStatus(itemMap);
|
||||
|
||||
// ? ?? ?? INSERT (???)
|
||||
DataMap exportLogMap = new DataMap();
|
||||
exportLogMap.put("ordrInnb", orderVO.getOrdrInnb());
|
||||
exportLogMap.put("ordrDlvyInnb", orderVO.getOrdrDlvyInnb());
|
||||
exportLogMap.put("sopmalCd", orderVO.getSopmalCd());
|
||||
exportLogMap.put("dlivyInnb", orderVO.getDlivyInnb());
|
||||
exportLogMap.put("dlivyGoodsCdNb", itemMap.get("ordrGoodsOptnInnb"));
|
||||
exportLogMap.put("reqstProcsSttusCd", DLIVY_STTUS_CD);
|
||||
exportLogMap.put("mssageCn", "[ACI ??] ORDR_INNB:" + orderVO.getOrdrInnb() + " ????");
|
||||
exportLogMap.put("regusr", 0);
|
||||
aciDlivyMapper.insertGoodsExportLog(exportLogMap);
|
||||
}
|
||||
|
||||
// ? gc_order_shipping ?? UPDATE (?? item_option ?? ???? ?? ??)
|
||||
aciDlivyMapper.updateOrderShippingStatus(orderVO);
|
||||
|
||||
// ? gc_order ?? UPDATE (?? shipping ?? ???? ?? ??)
|
||||
aciDlivyMapper.updateOrderStatus(orderVO);
|
||||
|
||||
// ? ?? ?? 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("dlivyCdNb", dlivyCdNb);
|
||||
orderLogMap.put("logDvCd", "01");
|
||||
orderLogMap.put("dvCd", "BATCH");
|
||||
orderLogMap.put("opetrNm", "ACI ??");
|
||||
orderLogMap.put("qy", 0);
|
||||
orderLogMap.put("amt", 0);
|
||||
aciDlivyMapper.insertOrderLog(orderLogMap);
|
||||
}
|
||||
}
|
||||
14
src/main/java/com/wb/domainserver/acidlivy/AciDlivyVO.java
Normal file
14
src/main/java/com/wb/domainserver/acidlivy/AciDlivyVO.java
Normal file
@@ -0,0 +1,14 @@
|
||||
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)
|
||||
}
|
||||
@@ -42,4 +42,7 @@ mail:
|
||||
acikey:
|
||||
url: https://acieshop.com/api/kr/token/
|
||||
userid: UNIHAN
|
||||
apikey: DC94F29AFD5399F54AAE7FAA46045B65
|
||||
apikey: DC94F29AFD5399F54AAE7FAA46045B65
|
||||
aci:
|
||||
dlivy:
|
||||
api-url: https://acieshop.com/api/kr/delivery/v1.5/detail/index.php
|
||||
|
||||
@@ -0,0 +1,356 @@
|
||||
<?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' ?????) -->
|
||||
<select id="selectAciDlivyTargetList" resultType="com.wb.domainserver.acidlivy.AciDlivyOrderVO">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
ORDR_DLVY_INNB,
|
||||
ORDR_INNB,
|
||||
SOPMAL_CD
|
||||
FROM GC_ORDER_SHIPPING
|
||||
WHERE ORDR_STTUS_CD = '35'
|
||||
AND USE_AT = 'Y'
|
||||
ORDER BY ORDR_DLVY_INNB
|
||||
]]>
|
||||
</select>
|
||||
|
||||
|
||||
<!-- ?? ?? ?????? ?? ?? -->
|
||||
<!-- QY: ????(35)? ?????? ??, ?? ??/????/?? ?? ?? -->
|
||||
<select id="selectAciDlivyTargetItemList"
|
||||
parameterType="com.wb.domainserver.acidlivy.AciDlivyOrderVO"
|
||||
resultType="dataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
OIOP.ORDR_GOODS_OPTN_INNB,
|
||||
OIOP.SOPMAL_CD,
|
||||
OIOP.OPTN_TY,
|
||||
((OIOP.ORDR_QY - OIOP.STEP85) - (OIOP.STEP45 + OIOP.STEP55 + OIOP.STEP65 + OIOP.STEP75)) AS QY
|
||||
FROM GC_ORDER_ITEM_OPTION OIOP
|
||||
INNER JOIN GC_ORDER_SHIPPING SH
|
||||
ON OIOP.SOPMAL_CD = SH.SOPMAL_CD
|
||||
AND OIOP.ORDR_DLVY_INNB = SH.ORDR_DLVY_INNB
|
||||
WHERE SH.SOPMAL_CD = #{sopmalCd}
|
||||
AND SH.ORDR_INNB = #{ordrInnb}
|
||||
AND SH.ORDR_DLVY_INNB = #{ordrDlvyInnb}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
|
||||
<!-- gc_goods_export ?? ?? -->
|
||||
<select id="selectGoodsExportCount"
|
||||
parameterType="com.wb.domainserver.acidlivy.AciDlivyOrderVO"
|
||||
resultType="int">
|
||||
<![CDATA[
|
||||
SELECT COUNT(1)
|
||||
FROM GC_GOODS_EXPORT
|
||||
WHERE SOPMAL_CD = #{sopmalCd}
|
||||
AND ORDR_INNB = #{ordrInnb}
|
||||
AND ORDR_DLVY_INNB = #{ordrDlvyInnb}
|
||||
AND HDRYCPN_CD = #{hdrycpnCd}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
|
||||
<!-- gc_goods_export INSERT -->
|
||||
<!-- DLIVY_CD_NB: 'D' + yyMMddHH + DLIVY_INNB, 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>
|
||||
|
||||
<![CDATA[
|
||||
INSERT INTO GC_GOODS_EXPORT (
|
||||
DLIVY_INNB,
|
||||
SOPMAL_CD,
|
||||
ORDR_INNB,
|
||||
ORDR_DLVY_INNB,
|
||||
DLIVY_CD_NB,
|
||||
DLIVY_STTUS_CD,
|
||||
STTUS_UPDT_DT,
|
||||
HDRYCPN_CD,
|
||||
INVCNB,
|
||||
DLIVY_DT,
|
||||
DLIVY_COMPT_DT,
|
||||
MNGR_INNB,
|
||||
REGIST_DT,
|
||||
UPDT_DT
|
||||
) VALUES (
|
||||
#{dlivyInnb},
|
||||
#{sopmalCd},
|
||||
#{ordrInnb},
|
||||
#{ordrDlvyInnb},
|
||||
CONCAT('D', DATE_FORMAT(SYSDATE(), '%y%m%d%H'), #{dlivyInnb}),
|
||||
#{dlivySttusCd},
|
||||
SYSDATE(),
|
||||
#{hdrycpnCd},
|
||||
#{blno},
|
||||
SYSDATE(),
|
||||
SYSDATE(),
|
||||
0,
|
||||
SYSDATE(),
|
||||
SYSDATE()
|
||||
)
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
|
||||
<!-- gc_goods_export UPDATE (?? ???? ??) -->
|
||||
<!-- selectKey ? ?? DLIVY_INNB ???? dlivyInnb ? ?? -->
|
||||
<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>
|
||||
|
||||
<![CDATA[
|
||||
UPDATE GC_GOODS_EXPORT SET
|
||||
INVCNB = #{blno},
|
||||
DLIVY_DT = SYSDATE(),
|
||||
DLIVY_COMPT_DT = SYSDATE(),
|
||||
UPDT_DT = SYSDATE()
|
||||
WHERE SOPMAL_CD = #{sopmalCd}
|
||||
AND ORDR_INNB = #{ordrInnb}
|
||||
AND ORDR_DLVY_INNB = #{ordrDlvyInnb}
|
||||
AND HDRYCPN_CD = #{hdrycpnCd}
|
||||
]]>
|
||||
</update>
|
||||
|
||||
|
||||
<!-- gc_goods_export_item ?? ?? -->
|
||||
<select id="selectGoodsExportItemCount"
|
||||
parameterType="dataMap"
|
||||
resultType="int">
|
||||
<![CDATA[
|
||||
SELECT COUNT(1)
|
||||
FROM GC_GOODS_EXPORT_ITEM
|
||||
WHERE SOPMAL_CD = #{sopmalCd}
|
||||
AND DLIVY_INNB = #{dlivyInnb}
|
||||
AND ORDR_GOODS_OPTN_INNB = #{ordrGoodsOptnInnb}
|
||||
AND OPTN_TY = #{optnTy}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
|
||||
<!-- gc_goods_export_item INSERT -->
|
||||
<insert id="insertGoodsExportItem" parameterType="dataMap">
|
||||
|
||||
<selectKey order="BEFORE" keyProperty="dlivyGoodsInnb" resultType="java.lang.String">
|
||||
SELECT IFNULL(MAX(DLIVY_GOODS_INNB), 0) + 1 FROM GC_GOODS_EXPORT_ITEM
|
||||
</selectKey>
|
||||
|
||||
<![CDATA[
|
||||
INSERT INTO GC_GOODS_EXPORT_ITEM (
|
||||
DLIVY_GOODS_INNB,
|
||||
DLIVY_INNB,
|
||||
ORDR_GOODS_OPTN_INNB,
|
||||
OPTN_TY,
|
||||
SOPMAL_CD,
|
||||
QY,
|
||||
PYMNT_PREARNGE_QY,
|
||||
ACCMLMNY_PYMNT_QY,
|
||||
PYMNT_PREARNGE_EXTSH_QY,
|
||||
NPAY_TRNSMIS_AT
|
||||
) VALUES (
|
||||
#{dlivyGoodsInnb},
|
||||
#{dlivyInnb},
|
||||
#{ordrGoodsOptnInnb},
|
||||
#{optnTy},
|
||||
#{sopmalCd},
|
||||
#{qy},
|
||||
#{qy},
|
||||
0,
|
||||
0,
|
||||
NULL
|
||||
)
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
|
||||
<!-- gc_goods_export_item UPDATE (?? ???? ??) -->
|
||||
<update id="updateGoodsExportItem" parameterType="dataMap">
|
||||
<![CDATA[
|
||||
UPDATE GC_GOODS_EXPORT_ITEM SET
|
||||
QY = (QY + #{qy}),
|
||||
PYMNT_PREARNGE_QY = (QY + #{qy})
|
||||
WHERE SOPMAL_CD = #{sopmalCd}
|
||||
AND DLIVY_INNB = #{dlivyInnb}
|
||||
AND ORDR_GOODS_OPTN_INNB = #{ordrGoodsOptnInnb}
|
||||
]]>
|
||||
</update>
|
||||
|
||||
|
||||
<!-- 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
|
||||
ORDR_STTUS_CD = CASE
|
||||
WHEN (ORDR_QY - STEP85) > #{qy} THEN '50'
|
||||
WHEN (ORDR_QY - STEP85) = #{qy} THEN '55'
|
||||
ELSE ORDR_STTUS_CD
|
||||
END,
|
||||
STEP55 = #{qy},
|
||||
STEP45 = 0,
|
||||
UPDT_DT = SYSDATE()
|
||||
WHERE SOPMAL_CD = #{sopmalCd}
|
||||
AND OPTN_TY = #{optnTy}
|
||||
AND ORDR_GOODS_OPTN_INNB = #{ordrGoodsOptnInnb}
|
||||
]]>
|
||||
</update>
|
||||
|
||||
|
||||
<!-- gc_order_shipping ?? UPDATE -->
|
||||
<!-- ????? ?? item_option ??/?? ???? ?? ?? (?? updateBOOrdrDlvyStatusUpdt6575 ?? ??) -->
|
||||
<update id="updateOrderShippingStatus"
|
||||
parameterType="com.wb.domainserver.acidlivy.AciDlivyOrderVO">
|
||||
<![CDATA[
|
||||
UPDATE GC_ORDER_SHIPPING SH,
|
||||
(
|
||||
SELECT
|
||||
CASE WHEN MAX(OIOP.ORDR_STTUS_CD) = MIN(OIOP.ORDR_STTUS_CD)
|
||||
THEN MAX(OIOP.ORDR_STTUS_CD)
|
||||
ELSE CAST(MAX(OIOP.ORDR_STTUS_CD) - 5 AS CHAR(2))
|
||||
END AS ORDR_STTUS_CD,
|
||||
SH.SOPMAL_CD,
|
||||
SH.ORDR_INNB,
|
||||
SH.ORDR_DLVY_INNB
|
||||
FROM GC_ORDER_SHIPPING SH
|
||||
INNER JOIN GC_ORDER_ITEM_OPTION OIOP
|
||||
ON SH.SOPMAL_CD = OIOP.SOPMAL_CD
|
||||
AND SH.ORDR_DLVY_INNB = OIOP.ORDR_DLVY_INNB
|
||||
AND OIOP.ORDR_QY <> OIOP.STEP85
|
||||
WHERE SH.SOPMAL_CD = #{sopmalCd}
|
||||
AND SH.ORDR_INNB = #{ordrInnb}
|
||||
AND SH.ORDR_DLVY_INNB = #{ordrDlvyInnb}
|
||||
AND SH.USE_AT = 'Y'
|
||||
GROUP BY SH.SOPMAL_CD, SH.ORDR_INNB, SH.ORDR_DLVY_INNB
|
||||
) STEP
|
||||
SET
|
||||
SH.ORDR_STTUS_CD = STEP.ORDR_STTUS_CD,
|
||||
SH.UPDT_DT = SYSDATE()
|
||||
WHERE SH.SOPMAL_CD = STEP.SOPMAL_CD
|
||||
AND SH.ORDR_INNB = STEP.ORDR_INNB
|
||||
AND SH.ORDR_DLVY_INNB = STEP.ORDR_DLVY_INNB
|
||||
]]>
|
||||
</update>
|
||||
|
||||
|
||||
<!-- gc_order ?? UPDATE -->
|
||||
<!-- ????? ?? shipping ??/?? ???? ?? ?? (?? updateBOOrdrStatusUpdt6575 ?? ??) -->
|
||||
<update id="updateOrderStatus"
|
||||
parameterType="com.wb.domainserver.acidlivy.AciDlivyOrderVO">
|
||||
<![CDATA[
|
||||
UPDATE GC_ORDER O,
|
||||
(
|
||||
SELECT
|
||||
CASE WHEN MAX(SH.ORDR_STTUS_CD) = MIN(SH.ORDR_STTUS_CD)
|
||||
THEN MAX(SH.ORDR_STTUS_CD)
|
||||
ELSE CAST(MAX(SH.ORDR_STTUS_CD) - 5 AS CHAR(2))
|
||||
END AS ORDR_STTUS_CD,
|
||||
O.SOPMAL_CD,
|
||||
O.ORDR_INNB
|
||||
FROM GC_ORDER O
|
||||
INNER JOIN GC_ORDER_SHIPPING SH
|
||||
ON O.SOPMAL_CD = SH.SOPMAL_CD
|
||||
AND O.ORDR_INNB = SH.ORDR_INNB
|
||||
AND SH.ORDR_STTUS_CD <> '85'
|
||||
WHERE O.SOPMAL_CD = #{sopmalCd}
|
||||
AND O.ORDR_INNB = #{ordrInnb}
|
||||
GROUP BY O.SOPMAL_CD, O.ORDR_INNB
|
||||
) STEP
|
||||
SET
|
||||
O.ORDR_STTUS_CD = STEP.ORDR_STTUS_CD,
|
||||
O.UPDT_DT = SYSDATE()
|
||||
WHERE O.SOPMAL_CD = STEP.SOPMAL_CD
|
||||
AND O.ORDR_INNB = STEP.ORDR_INNB
|
||||
AND O.USE_AT = 'Y'
|
||||
]]>
|
||||
</update>
|
||||
|
||||
|
||||
<!-- GC_GOODS_EXPORT_LOG INSERT -->
|
||||
<insert id="insertGoodsExportLog" parameterType="dataMap">
|
||||
|
||||
<selectKey order="BEFORE" keyProperty="dlivyLogInnb" resultType="java.lang.String">
|
||||
SELECT IFNULL(MAX(DLIVY_LOG_INNB), 0) + 1 FROM GC_GOODS_EXPORT_LOG
|
||||
</selectKey>
|
||||
|
||||
<![CDATA[
|
||||
INSERT INTO GC_GOODS_EXPORT_LOG (
|
||||
DLIVY_LOG_INNB,
|
||||
ORDR_INNB,
|
||||
ORDR_DLVY_INNB,
|
||||
MNGR_INNB,
|
||||
DLIVY_CD_NB,
|
||||
DLIVY_GOODS_CD_NB,
|
||||
INVNTRY_SETUP_CD,
|
||||
REQST_PROCS_STTUS_CD,
|
||||
MSSAGE_CN,
|
||||
REGIST_DT
|
||||
) SELECT
|
||||
#{dlivyLogInnb},
|
||||
#{ordrInnb},
|
||||
#{ordrDlvyInnb},
|
||||
#{regusr},
|
||||
DLIVY_CD_NB,
|
||||
#{dlivyGoodsCdNb},
|
||||
#{invntrySetupCd},
|
||||
#{reqstProcsSttusCd},
|
||||
#{mssageCn},
|
||||
SYSDATE()
|
||||
FROM GC_GOODS_EXPORT
|
||||
WHERE SOPMAL_CD = #{sopmalCd}
|
||||
AND DLIVY_INNB = #{dlivyInnb}
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
|
||||
<!-- GC_ORDER_LOG INSERT -->
|
||||
<insert id="insertOrderLog" parameterType="dataMap">
|
||||
<![CDATA[
|
||||
INSERT INTO GC_ORDER_LOG (
|
||||
ORDR_INNB,
|
||||
SOPMAL_CD,
|
||||
LOG_SJ,
|
||||
LOG_DTL_CN,
|
||||
ADIT_INFO_CN,
|
||||
DLIVY_INNB,
|
||||
ORDER_REFUND_INNB,
|
||||
LOG_DV_CD,
|
||||
DV_CD,
|
||||
OPETR_NM,
|
||||
QY,
|
||||
AMT,
|
||||
PROCS_DT
|
||||
) VALUES (
|
||||
#{ordrInnb},
|
||||
#{sopmalCd},
|
||||
#{logSj},
|
||||
#{logDtlCn},
|
||||
#{aditInfoCn},
|
||||
#{dlivyCdNb},
|
||||
#{refundCdNb},
|
||||
#{logDvCd},
|
||||
#{dvCd},
|
||||
#{opetrNm},
|
||||
#{qy},
|
||||
#{amt},
|
||||
SYSDATE()
|
||||
)
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user