Jelajahi Sumber

상품 재고 연동 개발중

eskim 5 tahun lalu
induk
melakukan
def8cb6dc0

+ 67 - 0
style24.batch/src/main/java/com/style24/batch/biz/dao/TsbGoodsDao.java

@@ -12,6 +12,7 @@ import com.style24.persistence.domain.GoodsSafeNo;
 import com.style24.persistence.domain.GoodsSummary;
 import com.style24.persistence.domain.IfBrand;
 import com.style24.persistence.domain.IfProduct;
+import com.style24.persistence.domain.IfProductSku;
 import com.style24.persistence.domain.IfProvider;
 
 /**
@@ -301,4 +302,70 @@ public interface TsbGoodsDao {
 	 */
 	Collection<IfProduct> getGoodsList();
 
+	/**
+	 * TB_IF_PRODUCTSKU_TEMP 삭제
+	 *
+	 * @author eskim
+	 * @since 2021. 01. 06
+	 */
+	void deleteIfProductSku();
+
+	/**
+	 * TB_IF_PRODUCTSKU_TEMP 저장
+	 *
+	 * @author eskim
+	 * @since 2021. 01. 06
+	 */
+	void createIfProductSku(IfProductSku ifProductSku);
+
+	/**
+	 * TB_IF_PRODUCTSKU_HST 삭제
+	 *
+	 * @author eskim
+	 * @since 2021. 01. 06
+	 */
+	void deleteWmsProductSkuHst(String jobdate);
+
+	/**
+	 * TB_IF_PRODUCTSKU_HST 저장
+	 *
+	 * @author eskim
+	 * @since 2021. 01. 06
+	 */
+	void createWmsProductSkuHst(String jobdate);
+
+
+	/**
+	 *  상품 전시재고 삭제
+	 *
+	 * @author eskim
+	 * @since 2021. 01. 06
+	 */
+	void deleteGoodsDispStock();
+
+	/**
+	 * 상품 전시재고 생성
+	 *
+	 * @author eskim
+	 * @since 2021. 01. 06
+	 */
+	void createGoodsDispStock();
+
+
+	/**
+	 * TB_STOCK = > TB_STOCK_SYNC 적용
+	 *
+	 * @author eskim
+	 * @since 2020. 08. 24
+	 */
+	void deleteTbOptionSyncTemp();
+
+	/**
+	 * ERP 재고 임시 테이블 이관
+	 *
+	 * @author eskim
+	 * @since 2020. 08. 24
+	 */
+	void createTbOptionSyncTemp();
+
 }

+ 11 - 0
style24.batch/src/main/java/com/style24/batch/biz/dao/TsbWmsGoodsDao.java

@@ -8,6 +8,7 @@ import com.style24.persistence.domain.GoodsIfIncomelotitem;
 import com.style24.persistence.domain.GoodsIfMeasurement;
 import com.style24.persistence.domain.IfBrand;
 import com.style24.persistence.domain.IfProduct;
+import com.style24.persistence.domain.IfProductSku;
 import com.style24.persistence.domain.IfProvider;
 
 /**
@@ -82,4 +83,14 @@ public interface TsbWmsGoodsDao {
 	 */
 	void saveWmsProduct(IfProduct ifProduct);
 
+	/**
+	 * WMS 재고 테이블 조회
+	 *
+	 * @return
+	 * @author eskim
+	 * @since 2021. 01. 06
+	 */
+	Collection<IfProductSku> getWmsIfProductSukList();
+
+
 }

+ 1 - 1
style24.batch/src/main/java/com/style24/batch/biz/job/goods/TsbGoodsWmsIncomelotJob.java

@@ -13,7 +13,7 @@ import lombok.extern.slf4j.Slf4j;
 import com.gagaframework.web.util.GagaDateUtil;
 
 /**
- * WMS 입고 연용
+ * WMS 입고 수신
  *
  * @author eskim
  * @since 2021. 01. 01

+ 1 - 1
style24.batch/src/main/java/com/style24/batch/biz/job/goods/TsbGoodsWmsMeasurementJob.java

@@ -13,7 +13,7 @@ import lombok.extern.slf4j.Slf4j;
 import com.gagaframework.web.util.GagaDateUtil;
 
 /**
- * WMS 실측사이즈 연용
+ * WMS 실측사이즈 수신
  *
  * @author eskim
  * @since 2020. 12. 31

+ 1 - 1
style24.batch/src/main/java/com/style24/batch/biz/job/goods/TsbGoodsWmsProductJob.java

@@ -13,7 +13,7 @@ import lombok.extern.slf4j.Slf4j;
 import com.gagaframework.web.util.GagaDateUtil;
 
 /**
- * WMS 입고 연용
+ * WMS 상품정보 송신
  *
  * @author eskim
  * @since 2021. 01. 01

+ 76 - 0
style24.batch/src/main/java/com/style24/batch/biz/job/goods/TsbGoodsWmsProductStockJob.java

@@ -0,0 +1,76 @@
+package com.style24.batch.biz.job.goods;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.style24.batch.biz.job.TsbAbstractJob;
+import com.style24.batch.biz.service.TsbCommonService;
+import com.style24.batch.biz.service.TsbGoodsService;
+import com.style24.persistence.domain.IfProductSku;
+
+import lombok.extern.slf4j.Slf4j;
+
+import com.gagaframework.web.util.GagaDateUtil;
+
+/**
+ * WMS 상품재고 수신
+ *
+ * @author eskim
+ * @since 2021. 01. 06
+ */
+@Component
+@Slf4j
+public class TsbGoodsWmsProductStockJob extends TsbAbstractJob<IfProductSku, IfProductSku, IfProductSku> {
+
+	@Autowired
+	private TsbGoodsService goodsService;
+
+	@Autowired
+	private TsbCommonService commonService;
+
+	private int succCnt = 0;
+	private int failCnt = 0;
+	private String jobdate = "";
+
+	@Override
+	public IfProductSku read() throws Exception {
+
+
+		IfProductSku ifProductSku = new IfProductSku();
+		return ifProductSku;
+	}
+
+	@Override
+	public IfProductSku process(IfProductSku ifProductSku) throws Exception {
+		return ifProductSku;
+	}
+
+	@Override
+	public IfProductSku write(IfProductSku ifProductSku) throws Exception {
+
+		jobdate = GagaDateUtil.getToday("yyyyMMddHHmm");
+
+		// WMS 동기화 옵션 여부 확인
+		String wmsSyncYn = commonService.getWmsSyncYn();
+		if ("N".equals(wmsSyncYn)) {
+			log.info("WMS 정보 동기화 미실행 {}, 연동여부 : {}", GagaDateUtil.getToday("yyyy-MM-dd HH:mm:ss"), wmsSyncYn);
+			return null;
+		}else {
+			//wms상품재고이력 생성
+			goodsService.createWmsProductSkuHst(jobdate);
+			//온라인 상품 재고 적용
+			goodsService.saveGoodsStock();
+		}
+
+		//온라인 전시 재고 작업
+		goodsService.saveGoodsDispStock();
+
+		return ifProductSku;
+	}
+
+	@Override
+	public void notify(IfProductSku ifProductSku) throws Exception {
+		super.printResult(succCnt, failCnt);
+	}
+
+}

+ 75 - 0
style24.batch/src/main/java/com/style24/batch/biz/service/TsbGoodsService.java

@@ -20,6 +20,7 @@ import com.style24.persistence.domain.GoodsSafeNo;
 import com.style24.persistence.domain.GoodsSummary;
 import com.style24.persistence.domain.IfBrand;
 import com.style24.persistence.domain.IfProduct;
+import com.style24.persistence.domain.IfProductSku;
 import com.style24.persistence.domain.IfProvider;
 
 import io.netty.util.internal.StringUtil;
@@ -27,6 +28,7 @@ import io.netty.util.internal.StringUtil;
 import lombok.extern.slf4j.Slf4j;
 
 import com.gagaframework.web.parameter.GagaMap;
+import com.gagaframework.web.util.GagaDateUtil;
 
 /**
  * 상품 Service
@@ -443,6 +445,79 @@ public class TsbGoodsService {
 		return goodsDao.getGoodsList();
 	}
 
+	/**
+	 * wms상품재고이력 생성
+	 *
+	 * @param jobdate
+	 * @return
+	 * @author eskim
+	 * @since 2021. 01. 07
+	 */
+	@Transactional("shopTxnManager")
+	public void createWmsProductSkuHst(String jobdate) {
+
+		// TB_IF_PRODUCTSKU_TEMP 작업
+		goodsDao.deleteIfProductSku();
+		// TB_IF_PRODUCTSKU_TEMP 생성
+		Collection<IfProductSku> wmsIfProductSukList = wmsGoodsService.getWmsIfProductSukList();
+		for(IfProductSku ifProductSku : wmsIfProductSukList) {
+			goodsDao.createIfProductSku(ifProductSku);
+		}
+
+		// TB_IF_PRODUCTSKU_HST 2달 전 데이터 삭제
+		String delYyyymmdd = GagaDateUtil.getOffsetMonth(-2, "yyyyMMdd") + "000000";  //년월일시분초
+		goodsDao.deleteWmsProductSkuHst(delYyyymmdd);
+		// TB_IF_PRODUCTSKU_HST 생성
+		goodsDao.createWmsProductSkuHst(jobdate);
 
+	}
 
+	/**
+	 * WMS 임시 테이블에서 실테이블로 이관
+	 *
+	 * @throws Exception
+	 * @author eskim
+	 * @since 2021. 01. 07
+	 */
+	@Transactional("shopTxnManager")
+	public void saveGoodsStock() throws Exception {
+
+		// wms 재고 임시 테이블(TB_OPTION_SYNC_TEMP) 삭제
+		goodsDao.deleteTbOptionSyncTemp();
+		// wms 재고 임시 테이블(TB_OPTION_SYNC_TEMP) 적용 - 출고처별 판매비율 적용
+		goodsDao.createTbOptionSyncTemp();
+////
+//			// 입점 상품 재고 동기화 후 SELL_QTY 삭제
+//			updateOptionByOfSellQty();
+//
+//			// TB_OPTION = > TB_OPTION_SYNC 적용
+//			tsbGoodsDao.deleteGoodsOptionSync();
+//			tsbGoodsDao.createGoodsOptionSync();
+//
+//			// TB_OPTION_SYNC_TEMP => TB_OPTION_SYNC 변경적용
+//			tsbGoodsDao.saveGoodsOptionSyncSync();
+//
+//			// TB_OPTION_SYNC => TB_OPTION 적용
+//			tsbGoodsDao.saveGoodsOptionNew();
+//
+//			// TB_OPTION_SYNC에 없는 상품,  재고 초기화
+//			tsbGoodsDao.updateOptionZero();
+//
+//			// 자사상품중 주문상세상태가 입금대기, 결제완료, 교환대기 건은 TB_SELL_QTY 생성
+//			createSellQtySelfGoods();
+
+	}
+
+	/**
+	 * 상품 전시재고 생성
+	 *
+	 * @throws Exception
+	 * @author eskim
+	 * @since 2020. 01. 06
+	 */
+	@Transactional("shopTxnManager")
+	public void saveGoodsDispStock() throws Exception {
+		goodsDao.deleteGoodsDispStock();
+		goodsDao.createGoodsDispStock();
+	}
 }

+ 11 - 0
style24.batch/src/main/java/com/style24/batch/biz/service/TsbWmsGoodsService.java

@@ -13,6 +13,7 @@ import com.style24.persistence.domain.GoodsIfIncomelotitem;
 import com.style24.persistence.domain.GoodsIfMeasurement;
 import com.style24.persistence.domain.IfBrand;
 import com.style24.persistence.domain.IfProduct;
+import com.style24.persistence.domain.IfProductSku;
 import com.style24.persistence.domain.IfProvider;
 
 import lombok.extern.slf4j.Slf4j;
@@ -141,7 +142,17 @@ public class TsbWmsGoodsService {
 			wmsGoodsDao.saveWmsProduct(ifProduct);
 
 		}
+	}
 
+	/**
+	 * WMS 재고 테이블 조회
+	 *
+	 * @return
+	 * @author eskim
+	 * @since 2021. 01. 06
+	 */
+	public Collection<IfProductSku> getWmsIfProductSukList() {
+		return wmsGoodsDao.getWmsIfProductSukList();
 	}
 
 }

+ 18 - 1
style24.batch/src/main/java/com/style24/batch/biz/task/TsbGoodsTask.java

@@ -16,6 +16,7 @@ import com.style24.batch.biz.job.goods.TsbGoodsWmsBrandproviderJob;
 import com.style24.batch.biz.job.goods.TsbGoodsWmsIncomelotJob;
 import com.style24.batch.biz.job.goods.TsbGoodsWmsMeasurementJob;
 import com.style24.batch.biz.job.goods.TsbGoodsWmsProductJob;
+import com.style24.batch.biz.job.goods.TsbGoodsWmsProductStockJob;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -61,6 +62,11 @@ public class TsbGoodsTask {
 	@Autowired
 	private TsbGoodsWmsProductJob goodsWmsProductJob;
 
+	@Autowired
+	private TsbGoodsWmsProductStockJob goodsWmsProductStockJob;
+
+
+
 	/**
 	 * 초 분 시 일 월 주(년)
 	 * 0 0 12 * * ?" : 아무 요일, 매월, 매일 12:00:00
@@ -187,7 +193,7 @@ public class TsbGoodsTask {
 	 * @throws Exception
 	 */
 	@Scheduled(cron = "${cron.goods.wms.incomelot}")
-	@Scheduled(fixedDelay = 3500000)
+	//@Scheduled(fixedDelay = 3500000)
 	@Async
 	public void tsbGoodsWmsIncomelotJob() throws Exception {
 		goodsWmsIncomelotJob.runById("cron.goods.wms.incomelot");
@@ -217,5 +223,16 @@ public class TsbGoodsTask {
 		goodsWmsProductJob.runById("cron.goods.wms.product");
 	}
 
+	/**
+	 * WMS 상품 재고 수신 적용 주기 : 시간배치 - 01분
+	 *
+	 * @throws Exception
+	 */
+	@Scheduled(cron = "${cron.goods.wms.product.stock}")
+	@Scheduled(fixedDelay = 3500000)
+	@Async
+	public void tsbGoodsWmsProductStockJob() throws Exception {
+		goodsWmsProductStockJob.runById("cron.goods.wms.product.stock");
+	}
 
 }

+ 33 - 0
style24.batch/src/main/java/com/style24/persistence/domain/IfProductSku.java

@@ -0,0 +1,33 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * wms 연동 상품재고정보 Domain
+ *
+ * @author eskim
+ * @since 2021. 01. 06
+ */
+@SuppressWarnings("serial")
+@Data
+public class IfProductSku extends TscBaseDomain {
+
+	private String skucode;				//옵션코드
+	private String skumodelno;			//옵션모델번호
+	private int productno;			//상품번호
+	private String productcode;			//상품코드
+	private String option1;				//옵션1(색상)
+	private String option2;				//옵션2(사이즈)
+	private String option3;				//옵션3(스타일)
+	private int sellingstockamount;	//판매재고수량
+	private String sellingstocktypecd;	//판매재고유형
+	private int limitstockamount;	//
+	private String vendorskumodelno;	//업체옵션모델번호
+	private String vendorskucode;		//업체옵션코드
+	private int isvirtualstock;		//
+	private String datevirtualstock;	//
+	private String skucode88;			//88코드
+
+}

+ 227 - 0
style24.batch/src/main/java/com/style24/persistence/mybatis/shop/TsbGoods.xml

@@ -1331,4 +1331,231 @@
 		]]>
 	</select>
 	
+	<!-- TB_IF_PRODUCTSKU_TEMP 삭제 -->
+	<delete id="deleteIfProductSku"  timeout="300">
+		/* TsbGoods.deleteIfProductSku */
+		TRUNCATE TABLE TB_IF_PRODUCTSKU
+	</delete>
+	
+	<!-- TB_IF_PRODUCTSKU_TEMP 저장 -->
+	<insert id="createIfProductSku"  parameterType="IfProduct">
+		/* TsbGoods.createIfProductSku */
+		INSERT INTO TB_IF_PRODUCTSKU(
+		       SKUCODE
+		     , SKUMODELNO
+		     , PRODUCTNO
+		     , PRODUCTCODE
+		     , OPTION1
+		     , OPTION2
+		     , OPTION3
+		     , SELLINGSTOCKAMOUNT
+		     , SELLINGSTOCKTYPECD
+		     , LIMITSTOCKAMOUNT
+		     , VENDORSKUMODELNO
+		     , VENDORSKUCODE
+		     , ISVIRTUALSTOCK
+		     , DATEVIRTUALSTOCK
+		     , SKUCODE88
+		     , UPD_DT
+		)
+		VALUES(
+		       #{skucode}
+		     , #{skumodelno}
+		     , #{productno}
+		     , #{productcode}
+		     , #{option1}
+		     , #{option2}
+		     , #{option3}
+		     , #{sellingstockamount}
+		     , #{sellingstocktypecd}
+		     , #{limitstockamount}
+		     , #{vendorskumodelno}
+		     , #{vendorskucode}
+		     , #{isvirtualstock}
+		     , #{datevirtualstock}
+		     , #{skucode88}
+		     , NOW()
+		)
+	</insert>
+	
+	<!-- TB_IF_PRODUCTSKU_HST 삭제 -->
+	<delete id="deleteWmsProductSkuHst"  parameterType="String" timeout="300">
+		/* TsbGoods.deleteWmsProductSkuHst */
+		DELETE TB_IF_PRODUCTSKU_HST
+		WHERE JOBDATE <![CDATA[<=]]> #{jobdate} 
+	</delete>
+	
+	<!-- TB_IF_PRODUCTSKU_HST 저장 -->
+	<insert id="createWmsProductSkuHst"  parameterType="String" timeout="300">
+		/* TsbGoods.createWmsProductSkuHst */
+		INSERT INTO TB_IF_PRODUCTSKU_HST(
+		       JOBDATE
+		     , SKUCODE
+		     , SKUMODELNO
+		     , PRODUCTNO
+		     , PRODUCTCODE
+		     , OPTION1
+		     , OPTION2
+		     , OPTION3
+		     , SELLINGSTOCKAMOUNT
+		     , SELLINGSTOCKTYPECD
+		     , LIMITSTOCKAMOUNT
+		     , VENDORSKUMODELNO
+		     , VENDORSKUCODE
+		     , ISVIRTUALSTOCK
+		     , DATEVIRTUALSTOCK
+		     , SKUCODE88
+		)
+		SELECT #{jobdate}
+		     , SKUCODE
+		     , SKUMODELNO
+		     , PRODUCTNO
+		     , PRODUCTCODE
+		     , OPTION1
+		     , OPTION2
+		     , OPTION3
+		     , SELLINGSTOCKAMOUNT
+		     , SELLINGSTOCKTYPECD
+		     , LIMITSTOCKAMOUNT
+		     , VENDORSKUMODELNO
+		     , VENDORSKUCODE
+		     , ISVIRTUALSTOCK
+		     , DATEVIRTUALSTOCK
+		     , SKUCODE88
+		FROM TB_IF_PRODUCTSKU
+	</insert>
+	
+	<!-- TB_GOODS_STOCK 삭제 -->
+	<delete id="deleteGoodsDispStock"   timeout="300">
+		/* TsbGoods.deleteGoodsDispStock */
+		DELETE FROM TB_GOODS_STOCK
+	</delete>
+	
+	<!-- TB_GOODS_STOCK 저장 -->
+	<insert id="createGoodsDispStock"  parameterType="String" timeout="300">
+		/* TsbGoods.createGoodsDispStock */
+		INSERT INTO TB_GOODS_STOCK( 
+		    GOODS_CD
+		  , STOCK_QTY
+		  , REG_DT
+		)
+		SELECT Z.GOODS_CD
+		     , MIN(Z.STOCK_QTY_ITEM) AS STOCK_QTY
+		     , NOW()
+		FROM   (
+		        SELECT A.GOODS_CD
+		             , A.MIN_ORD_QTY
+		             , SUM(C.CURR_STOCK_QTY - C.BASE_STOCK_QTY) AS STOCK_QTY_ITEM
+		        FROM   TB_GOODS A
+		             , VW_STOCK C
+		        WHERE  A.GOODS_CD = C.GOODS_CD
+		        AND    C.SOLDOUT_YN = 'N'
+		        AND    C.CURR_STOCK_QTY - C.BASE_STOCK_QTY > 0
+		        GROUP  BY A.GOODS_CD, A.MIN_ORD_QTY
+		        UNION ALL
+		        SELECT A.GOODS_CD
+		             , A.MIN_ORD_QTY
+		             , SUM(C.CURR_STOCK_QTY - C.BASE_STOCK_QTY) AS STOCK_QTY_ITEM
+		        FROM   TB_GOODS A
+		             , TB_GOODS_COMPOSE B
+		             , VW_STOCK C
+		        WHERE  A.GOODS_CD = B.GOODS_CD
+		        AND    B.COMPS_GOODS_CD = C.GOODS_CD
+		        AND    B.USE_YN = 'Y'
+		        AND    A.GOODS_TYPE != 'N'
+		        AND    C.SOLDOUT_YN = 'N'
+		        AND    C.CURR_STOCK_QTY - C.BASE_STOCK_QTY > 0
+		        GROUP  BY A.GOODS_CD, A.MIN_ORD_QTY
+		       ) Z
+		GROUP  BY Z.GOODS_CD, Z.MIN_ORD_QTY
+		HAVING Z.MIN_ORD_QTY <![CDATA[<=]]> MIN(Z.STOCK_QTY_ITEM)
+	</insert>
+	
+	<!-- ERP 재고 임시 테이블 삭제 -->
+	<delete id="deleteTbOptionSyncTemp">
+		/* TsbGoods.deleteTbOptionSyncTemp */
+		TRUNCATE TABLE TB_OPTION_SYNC_TEMP
+	</delete>
+
+	<!--ERP 재고 임시 테이블 이관  -->
+	<insert id="createTbOptionSyncTemp">
+		/* TsbGoods.createTbOptionSyncTemp */
+		INSERT INTO TB_OPTION_SYNC_TEMP
+		(
+		       GOODS_CD
+		     , OPT_CD
+		     , OPT_CD1
+		     , OPT_CD2
+		     , SKU_MODEL_NO
+		     , PRODUCT_NO
+		     , PRODUCT_CODE
+		     , BASE_STOCK_QTY
+		     , CURR_STOCK_QTY
+		     , ADD_PRICE
+		     , SOLDOUT_YN
+		     , DISP_ORD
+		     , DISP_YN
+		     , ERP_STOCK_LINK_YN
+		     , REG_ID
+		     , REG_DT
+		     , UPD_ID
+		     , UPD_DT
+		)
+		SELECT GOODS_CD
+		     , OPT_CD
+		     , OPT_CD1
+		     , OPT_CD2
+		     , SKU_MODEL_NO
+		     , PRODUCT_NO
+		     , PRODUCT_CODE
+		     , 0 AS BASE_STOCK_QTY
+		     , CURR_STOCK_QTY
+		     , 'N' AS SOLDOUT_YN
+		     , DISP_ORD
+		     , 'Y' AS DISP_YN
+		     , ERP_STOCK_LINK_YN
+		     , 'batch' AS REG_ID
+		     , SYSDATE AS REG_DT
+		     , 'batch' AS UPD_ID
+		     , SYSDATE AS UPD_DT
+		FROM (
+		      SELECT GOODS_CD
+		           , SIZE_CD
+		           , SIZE_NM
+		           , SUM(CURR_ON_STOCK_QTY) AS CURR_ON_STOCK_QTY
+		           , SUM(CURR_OFF_STOCK_QTY) AS CURR_OFF_STOCK_QTY
+		           , SUM(CURR_SHOP_STOCK_QTY) AS CURR_SHOP_STOCK_QTY
+		           , NVL((SELECT (MAX(DISP_ORD) + 1) AS DISP_ORD FROM TB_STOCK WHERE GOODS_CD = Z.GOODS_CD)
+		           , ROW_NUMBER() OVER(PARTITION BY GOODS_CD ORDER BY SIZE_CD)) AS DISP_ORD
+		           , ERP_STOCK_LINK_YN
+		       FROM (
+		           SELECT B.GOODS_CD
+		                , A.SKUCODE AS OPT_CD
+		                , A.OPTION1 AS OPT_CD1
+		                , A.OPTION2 ASOPT_CD2
+		                , A.SKUMODELNO AS SKU_MODEL_NO
+		                , B.PRODUCT_NO
+		                , B.PRODUCT_CODE
+		                , SUM(GREATEST(A.SELLINGSTOCKAMOUNT, 0)) AS CURR_STOCK_QTY
+		                , B.ERP_STOCK_LINK_YN
+		                , A.CD_LOC
+		                , D.STOCK_APPL_RATE
+		           FROM TB_IF_PRODUCTSKU_TEMP A, TB_GOODS B, TB_STOCK_LINK_BASE C, TB_DELIVERY_LOC D
+		           WHERE B.SELF_GOODS_YN = 'Y'
+		           AND B.GOODS_TYPE = 'N'
+		           AND B.GOODS_NUM = A.CD_STYLE
+		           AND B.COLOR_CD = A.CD_COLOR
+		           AND B.BRAND_CD = C.BRAND_CD
+		           AND B.FORMAL_GB = C.FORMAL_GB
+		           AND B.SUPPLY_COMP_CD = D.SUPPLY_COMP_CD
+		           AND C.STOCK_LINK_YN = 'Y'
+		           AND D.USE_YN = 'Y'
+		           AND A.CD_LOC = C.DELV_LOC_CD
+		           AND A.CD_LOC = D.DELV_LOC_CD
+		           GROUP BY B.GOODS_CD, A.CD_SIZE, B.ERP_STOCK_LINK_YN, A.CD_LOC, D.STOCK_APPL_RATE
+		           ) Z
+		       GROUP BY GOODS_CD, SIZE_CD, ERP_STOCK_LINK_YN
+		      )
+	</insert>
+	
 </mapper>

+ 21 - 0
style24.batch/src/main/java/com/style24/persistence/mybatis/wms/TsbWmsGoods.xml

@@ -213,4 +213,25 @@
 		WHERE PRODUCTCODE = #{productcode}
 	</update>
 	
+	<!-- WMS 재고 테이블 조회   -->
+	<select id="getWmsIfProductSukList"  resultType="IfProductSku">
+		/* TsbWmsGoods.getWmsIfProductSukList */
+		SELECT SKUCODE
+		     , SKUMODELNO
+		     , PRODUCTNO
+		     , PRODUCTCODE
+		     , OPTION1
+		     , OPTION2
+		     , OPTION3
+		     , SELLINGSTOCKAMOUNT
+		     , SELLINGSTOCKTYPECD
+		     , LIMITSTOCKAMOUNT
+		     , VENDORSKUMODELNO
+		     , VENDORSKUCODE
+		     , ISVIRTUALSTOCK
+		     , DATEVIRTUALSTOCK
+		     , SKUCODE88
+		FROM TB_IF_PRODUCTSKU
+	</select>
+	
 </mapper>

+ 1 - 0
style24.batch/src/main/resources/config/application-locd.yml

@@ -53,6 +53,7 @@ cron:
         wms.incomelot: 2 22 2 29 2 ?
         wms.brandprovider: 2 22 2 29 2 ?
         wms.product: 2 22 2 29 2 ?
+        wms.product.stock: 2 22 2 29 2 ?
     
     #통계
     statistics: