Procházet zdrojové kódy

WMS 재고 배치 수정

eskim před 5 roky
rodič
revize
46f5da4b36

+ 59 - 18
src/main/java/com/style24/batch/biz/dao/TsbGoodsDao.java

@@ -12,9 +12,9 @@ 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 com.style24.persistence.domain.Option;
+import com.style24.persistence.domain.WmsStock;
 
 import com.gagaframework.web.parameter.GagaMap;
 
@@ -329,47 +329,88 @@ public interface TsbGoodsDao {
 	 */
 	Collection<IfProduct> getGoodsList();
 
+//	/**
+//	 * TB_IF_PRODUCTSKU 삭제
+//	 *
+//	 * @author eskim
+//	 * @since 2021. 01. 06
+//	 */
+//	void deleteIfProductSku();
+//
+//	/**
+//	 * TB_IF_PRODUCTSKU 저장
+//	 *
+//	 * @author eskim
+//	 * @since 2021. 01. 06
+//	 */
+//	//void createIfProductSku(IfProductSku ifProductSku);
+//	void createIfProductSku(GagaMap dataMap);
+//
+//	/**
+//	 * TB_IF_PRODUCTSKU 저장
+//	 *
+//	 * @author eskim
+//	 * @since 2021. 01. 06
+//	 */
+//	void createIfProductSkuByRow(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);
+
 	/**
-	 * TB_IF_PRODUCTSKU 삭제
+	 * TB_WMS_STOCK 삭제
 	 *
 	 * @author eskim
-	 * @since 2021. 01. 06
+	 * @since 2021. 05. 26
 	 */
-	void deleteIfProductSku();
+	void deleteWmsStock();
 
 	/**
-	 * TB_IF_PRODUCTSKU 저장
+	 * TB_WMS_STOCK 저장
 	 *
 	 * @author eskim
-	 * @since 2021. 01. 06
+	 * @since 2021. 05. 26
 	 */
-	//void createIfProductSku(IfProductSku ifProductSku);
-	void createIfProductSku(GagaMap dataMap);
+	void createWmsStock(GagaMap dataMap);
 
 	/**
-	 * TB_IF_PRODUCTSKU 저장
+	 * TB_WMS_STOCK 저장
 	 *
 	 * @author eskim
-	 * @since 2021. 01. 06
+	 * @since 2021. 05. 26
 	 */
-	void createIfProductSkuByRow(IfProductSku ifProductSku);
+	void createWmsStockByRow(WmsStock wmsStock);
 
 	/**
-	 * TB_IF_PRODUCTSKU_HST 삭제
+	 * TB_WMS_STOCK_HST 삭제
 	 *
 	 * @author eskim
-	 * @since 2021. 01. 06
+	 * @since 2021. 05. 26
 	 */
-	void deleteWmsProductSkuHst(String jobdate);
+	void deleteWmsStockHst(String jobdate);
 
 	/**
-	 * TB_IF_PRODUCTSKU_HST 저장
+	 * TB_WMS_STOCK_HST 저장
 	 *
 	 * @author eskim
-	 * @since 2021. 01. 06
+	 * @since 2021. 05. 26
 	 */
-	void createWmsProductSkuHst(String jobdate);
-
+	void createWmsStockHst(String jobdate);
+	
+	
 	/**
 	 *  상품 전시재고 삭제
 	 *

+ 3 - 4
src/main/java/com/style24/batch/biz/dao/TsbWmsGoodsDao.java

@@ -8,8 +8,8 @@ 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 com.style24.persistence.domain.WmsStock;
 
 /**
  * WMS 상품 연동Dao
@@ -88,9 +88,8 @@ public interface TsbWmsGoodsDao {
 	 *
 	 * @return
 	 * @author eskim
-	 * @since 2021. 01. 06
+	 * @since 2021. 05. 26
 	 */
-	Collection<IfProductSku> getWmsIfProductSukList();
-
+	Collection<WmsStock> getWmsStockList();
 
 }

+ 48 - 51
src/main/java/com/style24/batch/biz/job/goods/TsbGoodsWmsGoodsStockJob.java

@@ -1,5 +1,9 @@
 package com.style24.batch.biz.job.goods;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -7,10 +11,11 @@ import com.style24.batch.biz.job.TsbAbstractJob;
 import com.style24.batch.biz.service.TsbCommonService;
 import com.style24.batch.biz.service.TsbGoodsService;
 import com.style24.batch.biz.service.TsbWmsGoodsService;
-import com.style24.persistence.domain.IfProductSku;
+import com.style24.persistence.domain.WmsStock;
 
 import lombok.extern.slf4j.Slf4j;
 
+import com.gagaframework.web.parameter.GagaMap;
 import com.gagaframework.web.util.GagaDateUtil;
 
 /**
@@ -21,7 +26,7 @@ import com.gagaframework.web.util.GagaDateUtil;
  */
 @Component
 @Slf4j
-public class TsbGoodsWmsGoodsStockJob extends TsbAbstractJob<IfProductSku, IfProductSku, IfProductSku> {
+public class TsbGoodsWmsGoodsStockJob extends TsbAbstractJob<WmsStock, WmsStock, WmsStock> {
 
 	@Autowired
 	private TsbGoodsService goodsService;
@@ -37,19 +42,19 @@ public class TsbGoodsWmsGoodsStockJob extends TsbAbstractJob<IfProductSku, IfPro
 	private String jobdate = "";
 
 	@Override
-	public IfProductSku read() throws Exception {
+	public WmsStock read() throws Exception {
 
-		IfProductSku ifProductSku = new IfProductSku();
-		return ifProductSku;
+		WmsStock wmsStock = new WmsStock();
+		return wmsStock;
 	}
 
 	@Override
-	public IfProductSku process(IfProductSku ifProductSku) throws Exception {
-		return ifProductSku;
+	public WmsStock process(WmsStock wmsStock) throws Exception {
+		return wmsStock;
 	}
 
 	@Override
-	public IfProductSku write(IfProductSku ifProductSku) throws Exception {
+	public WmsStock write(WmsStock wmsStock) throws Exception {
 
 		jobdate = GagaDateUtil.getToday("yyyyMMddHHmm");
 
@@ -59,59 +64,51 @@ public class TsbGoodsWmsGoodsStockJob extends TsbAbstractJob<IfProductSku, IfPro
 			log.info("WMS 정보 동기화 미실행 {}, 연동여부 : {}", GagaDateUtil.getToday("yyyy-MM-dd HH:mm:ss"), wmsSyncYn);
 			return null;
 		} else {
-			/**
-			 * 나중에 개발 서버에서 꼭 테스트 해봅시다~~~~
-			 */
+
+			// TB_STOCK_BY_LOCCODE 작업
+			goodsService.deleteWmsStock();
+
+			// TB_STOCK_BY_LOCCODE  생성
+			Collection<WmsStock> wmsStockList = wmsGoodsService.getWmsStockList();
+			String byrow = "N";
+			if ("Y".equals(byrow)) {
+				for (WmsStock loopWmsStock : wmsStockList) {
+					goodsService.createWmsStockByRow(loopWmsStock);
+				}
+			} else {
+
+				List<WmsStock> productSukList = new ArrayList<WmsStock>();
+				log.info("productSukList.size = {}", productSukList.size());
+				GagaMap dataMap = new GagaMap();
+				int index = 0;
+				for (WmsStock loopWmsStock : wmsStockList) {
+
+					productSukList.add(loopWmsStock);
+					index++;
+					if (index % 20 == 0 || wmsStockList.size() == index) {
+						dataMap.set("productSukList", productSukList);
+						goodsService.createWmsStock(dataMap);
+						productSukList.clear();
+					}
+				}
+			}
+			
 			//wms상품재고이력 생성
-			goodsService.createWmsProductSkuHst(jobdate);
-
-//  대용량 테스트 			
-			// TB_IF_PRODUCTSKU 작업
-//			goodsService.deleteIfProductSku();
-//
-//			// TB_IF_PRODUCTSKU  생성
-//			Collection<IfProductSku> wmsIfProductSukList = wmsGoodsService.getWmsIfProductSukList();  //테스트 1000건
-//
-//			//대용량 : N
-//			String byrow = "N";
-//			if ("Y".equals(byrow)) {
-//				for(IfProductSku ifProductSkuMap : wmsIfProductSukList) {
-//					goodsService.createIfProductSkuByRow(ifProductSkuMap);
-//				}
-//			}else {
-//
-//				List<IfProductSku> productSukList = new ArrayList<IfProductSku>();
-//				GagaMap dataMap = new GagaMap();
-//				int index = 0;
-//				for(IfProductSku ifProductSkuMap : wmsIfProductSukList) {
-//
-//					productSukList.add(ifProductSkuMap);
-//					index++;
-//					if (index % 200 == 0 ||  wmsIfProductSukList.size() == index) {
-//						dataMap.set("productSukList", productSukList);
-//						goodsService.createIfProductSku(dataMap);
-//
-//						productSukList.clear();
-//					}
-//				}
-//
-//			}
-//
-//			// TB_IF_PRODUCTSKU_HST 생성
-//			goodsService.createWmsProductSkuHst(jobdate);
+			goodsService.createWmsStockHst(jobdate);
+
 
 			//온라인 상품 재고 적용
-			goodsService.saveGoodsStock();
+			goodsService.saveGoodsStock(); // 테스트 막음
 		}
 
 		//온라인 전시 재고 작업
-		goodsService.saveGoodsDispStock();
+		//goodsService.saveGoodsDispStock();  // 테스트 막음
 
-		return ifProductSku;
+		return wmsStock;
 	}
 
 	@Override
-	public void notify(IfProductSku ifProductSku) throws Exception {
+	public void notify(WmsStock wmsStock) throws Exception {
 		super.printResult(succCnt, failCnt);
 	}
 

+ 115 - 52
src/main/java/com/style24/batch/biz/service/TsbGoodsService.java

@@ -1,9 +1,7 @@
 package com.style24.batch.biz.service;
 
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.Collection;
-import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -23,9 +21,9 @@ 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 com.style24.persistence.domain.Option;
+import com.style24.persistence.domain.WmsStock;
 
 import io.netty.util.internal.StringUtil;
 
@@ -485,6 +483,55 @@ 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  작업
+//		goodsDao.deleteIfProductSku();
+//
+//		// TB_IF_PRODUCTSKU  생성
+//		Collection<IfProductSku> wmsIfProductSukList = wmsGoodsService.getWmsIfProductSukList();
+//		String byrow = "Y";
+//		if ("Y".equals(byrow)) {
+//			for (IfProductSku ifProductSku : wmsIfProductSukList) {
+//				goodsDao.createIfProductSkuByRow(ifProductSku);
+//			}
+//		} else {
+//
+//			List<IfProductSku> productSukList = new ArrayList<IfProductSku>();
+//
+//			GagaMap dataMap = new GagaMap();
+//			int index = 0;
+//			for (IfProductSku ifProductSku : wmsIfProductSukList) {
+//
+//				productSukList.add(ifProductSku);
+//				index++;
+//				if (index % 200 == 0 || wmsIfProductSukList.size() == index) {
+//					dataMap.set("productSukList", productSukList);
+//					goodsDao.createIfProductSku(dataMap);
+//					productSukList.clear();
+//				}
+//			}
+//
+//		}
+//
+//		// TB_IF_PRODUCTSKU_HST 2달 전 데이터 삭제
+//		String delYyyymmdd = GagaDateUtil.getOffsetMonth(-2, "yyyyMMdd") + "000000";  //년월일시분초
+//		goodsDao.deleteWmsProductSkuHst(delYyyymmdd);
+//		// TB_IF_PRODUCTSKU_HST 생성
+//		goodsDao.createWmsProductSkuHst(jobdate);
+//
+//	}
+
+	
 	/**
 	 * wms상품재고이력 생성
 	 *
@@ -494,45 +541,17 @@ public class TsbGoodsService {
 	 * @since 2021. 01. 07
 	 */
 	@Transactional("shopTxnManager")
-	public void createWmsProductSkuHst(String jobdate) {
+	public void createWmsStockHst(String jobdate) {
 
-		// TB_IF_PRODUCTSKU  작업
-		goodsDao.deleteIfProductSku();
-
-		// TB_IF_PRODUCTSKU  생성
-		Collection<IfProductSku> wmsIfProductSukList = wmsGoodsService.getWmsIfProductSukList();
-		String byrow = "Y";
-		if ("Y".equals(byrow)) {
-			for (IfProductSku ifProductSku : wmsIfProductSukList) {
-				goodsDao.createIfProductSkuByRow(ifProductSku);
-			}
-		} else {
-
-			List<IfProductSku> productSukList = new ArrayList<IfProductSku>();
-
-			GagaMap dataMap = new GagaMap();
-			int index = 0;
-			for (IfProductSku ifProductSku : wmsIfProductSukList) {
-
-				productSukList.add(ifProductSku);
-				index++;
-				if (index % 200 == 0 || wmsIfProductSukList.size() == index) {
-					dataMap.set("productSukList", productSukList);
-					goodsDao.createIfProductSku(dataMap);
-					productSukList.clear();
-				}
-			}
-
-		}
-
-		// TB_IF_PRODUCTSKU_HST 2달 전 데이터 삭제
+		// TB_WMS_STOCK_HST 2달 전 데이터 삭제
 		String delYyyymmdd = GagaDateUtil.getOffsetMonth(-2, "yyyyMMdd") + "000000";  //년월일시분초
-		goodsDao.deleteWmsProductSkuHst(delYyyymmdd);
-		// TB_IF_PRODUCTSKU_HST 생성
-		goodsDao.createWmsProductSkuHst(jobdate);
+		goodsDao.deleteWmsStockHst(delYyyymmdd);
+		// TB_WMS_STOCK_HST 생성
+		goodsDao.createWmsStockHst(jobdate);
 
 	}
 
+	
 	/**
 	 * WMS 임시 테이블에서 실테이블로 이관
 	 *
@@ -548,12 +567,12 @@ public class TsbGoodsService {
 		// wms 재고 임시 테이블(TB_OPTION_SYNC_TEMP) 적용 - 출고처별 판매비율 적용
 		goodsDao.createTbOptionSyncTemp();
 
-		// 입점 상품 재고 동기화 후 SELL_QTY 삭제
+		// 입점 상품 재고 동기화 
 		updateOptionByOfSellQty();
 
 		// TB_OPTION = > TB_OPTION_SYNC 적용
 		goodsDao.deleteGoodsOptionSync();
-		goodsDao.createGoodsOptionSync();
+		goodsDao.createGoodsOptionSync();  // TB_OPTION_SYNC.CURR_STOCK_QTY 초기화
 
 		// TB_OPTION_SYNC_TEMP => TB_OPTION_SYNC 변경적용
 		goodsDao.saveGoodsOptionSyncSync();
@@ -630,50 +649,94 @@ public class TsbGoodsService {
 		goodsDao.createGoodsDispStock();
 	}
 
+//	/**
+//	 * TB_IF_PRODUCTSKU  삭제
+//	 *
+//	 * @author eskim
+//	 * @since 2020. 01. 11
+//	 */
+//	@Transactional("shopTxnManager")
+//	public void deleteIfProductSku() {
+//		goodsDao.deleteIfProductSku();
+//	}
+//
+//	/**
+//	 * TB_IF_PRODUCTSKU 생성(by row )
+//	 *
+//	 * @author eskim
+//	 * @since 2020. 01. 11
+//	 */
+//	@Transactional("shopTxnManager")
+//	public void createIfProductSkuByRow(IfProductSku ifProductSku) {
+//		goodsDao.createIfProductSkuByRow(ifProductSku);
+//	}
+//
+//	/**
+//	 * TB_IF_PRODUCTSKU 생성
+//	 *
+//	 * @author eskim
+//	 * @since 2020. 01. 11
+//	 */
+//	@Transactional("shopTxnManager")
+//	public void createIfProductSku(GagaMap dataMap) {
+//		goodsDao.createIfProductSku(dataMap);
+//	}
+//
+//	/**
+//	 * TB_IF_PRODUCTSKU_HST 저장
+//	 *
+//	 * @author eskim
+//	 * @since 2021. 01. 11
+//	 */
+//	@Transactional("shopTxnManager")
+//	public void createIfProductSku(String jobdate) {
+//		goodsDao.createWmsProductSkuHst(jobdate);
+//	}
+
 	/**
-	 * TB_IF_PRODUCTSKU  삭제
+	 * TB_WMS_STOCK  삭제
 	 *
 	 * @author eskim
 	 * @since 2020. 01. 11
 	 */
 	@Transactional("shopTxnManager")
-	public void deleteIfProductSku() {
-		goodsDao.deleteIfProductSku();
+	public void deleteWmsStock() {
+		goodsDao.deleteWmsStock();
 	}
 
 	/**
-	 * TB_IF_PRODUCTSKU 생성(by row )
+	 * TB_WMS_STOCK 생성(by row )
 	 *
 	 * @author eskim
 	 * @since 2020. 01. 11
 	 */
 	@Transactional("shopTxnManager")
-	public void createIfProductSkuByRow(IfProductSku ifProductSku) {
-		goodsDao.createIfProductSkuByRow(ifProductSku);
+	public void createWmsStockByRow(WmsStock wmsStock) {
+		goodsDao.createWmsStockByRow(wmsStock);
 	}
 
 	/**
-	 * TB_IF_PRODUCTSKU 생성
+	 * TB_WMS_STOCK 생성
 	 *
 	 * @author eskim
 	 * @since 2020. 01. 11
 	 */
 	@Transactional("shopTxnManager")
-	public void createIfProductSku(GagaMap dataMap) {
-		goodsDao.createIfProductSku(dataMap);
+	public void createWmsStock(GagaMap dataMap) {
+		goodsDao.createWmsStock(dataMap);
 	}
 
 	/**
-	 * TB_IF_PRODUCTSKU_HST 저장
+	 * TB_WMS_STOCK_HST 삭제
 	 *
 	 * @author eskim
 	 * @since 2021. 01. 11
 	 */
 	@Transactional("shopTxnManager")
-	public void createIfProductSku(String jobdate) {
-		goodsDao.createWmsProductSkuHst(jobdate);
+	public void deleteWmsStockHst(String jobdate) {
+		goodsDao.deleteWmsStockHst(jobdate);
 	}
-
+	
 	/**
 	 * 입고상품중 온라인 옵션이 없는 상품옵션 추가
 	 *

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

@@ -13,8 +13,8 @@ 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 com.style24.persistence.domain.WmsStock;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -154,10 +154,10 @@ public class TsbWmsGoodsService {
 	 *
 	 * @return
 	 * @author eskim
-	 * @since 2021. 01. 06
+	 * @since 2021. 05. 26
 	 */
-	public Collection<IfProductSku> getWmsIfProductSukList() {
-		return wmsGoodsDao.getWmsIfProductSukList();
+	public Collection<WmsStock> getWmsStockList() {
+		return wmsGoodsDao.getWmsStockList();
 	}
 
 }

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

@@ -233,6 +233,7 @@ public class TsbGoodsTask {
 	 * @throws Exception
 	 */
 	@Scheduled(cron = "${cron.goods.wms.stock.receive}")
+	@Scheduled(fixedDelay = 3500000)
 	@Async
 	public void wmsStockReceiveJob() throws Exception {
 		goodsWmsGoodsStockJob.runById("cron.goods.wms.stock.receive");

+ 23 - 0
src/main/java/com/style24/persistence/domain/WmsStock.java

@@ -0,0 +1,23 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * wms 연동 상품재고정보 Domain
+ *
+ * @author eskim
+ * @since 2021. 05. 26
+ */
+@SuppressWarnings("serial")
+@Data
+public class WmsStock extends TscBaseDomain {
+
+	private int productNo;		//ProductNo(WMS)
+	private String skuCode;		//옵션코드
+	private int locQty;			//위치재고수량
+	private int pickingQty;		//피킹수량
+	private int eoutPickingQty;	//EOUT피킹수량
+
+}

+ 113 - 48
src/main/java/com/style24/persistence/mybatis/shop/TsbGoods.xml

@@ -1663,6 +1663,85 @@
 		FROM TB_IF_PRODUCTSKU
 	</insert>
 	
+	<!-- TB_WMS_STOCK 삭제 -->
+	<delete id="deleteWmsStock"  timeout="300">
+		/* TsbGoods.deleteWmsStock */
+		DELETE FROM TB_WMS_STOCK
+	</delete>
+	
+	<!-- TB_WMS_STOCK 저장 -->
+	<insert id="createWmsStock"  parameterType="java.util.HashMap" >
+		/* TsbGoods.createWmsStock */
+		INSERT INTO TB_WMS_STOCK(
+		      PRODUCT_NO      
+		      ,SKU_CODE        
+		      ,LOC_QTY         
+		      ,PICKING_QTY     
+		      ,EOUT_PICKING_QTY
+		      ,UPD_DT 
+		)
+		VALUES
+		<foreach collection="productSukList" item="item" index="index"  separator=",">
+		(
+		       #{item.productNo}
+		     , #{item.skuCode}
+		     , #{item.locQty}
+		     , #{item.pickingQty}
+		     , #{item.eoutPickingQty}
+		     , NOW()
+		)
+		</foreach>
+		
+	</insert>
+	
+	<!-- TB_IF_PRODUCTSKU 저장 -->
+	<insert id="createWmsStockByRow"  parameterType="WmsStock">
+		/* TsbGoods.createWmsStockByRow */
+		INSERT INTO TB_WMS_STOCK(
+		       PRODUCT_NO      
+		      ,SKU_CODE        
+		      ,LOC_QTY         
+		      ,PICKING_QTY     
+		      ,EOUT_PICKING_QTY
+		      ,UPD_DT
+		)
+		VALUES(
+		       #{productNo}
+		     , #{skuCode}
+		     , #{locQty}
+		     , #{pickingQty}
+		     , #{eoutPickingQty}
+		     , NOW()
+		)
+	</insert>
+	
+	<!-- TB_IF_PRODUCTSKU_HST 삭제 -->
+	<delete id="deleteWmsStockHst"  parameterType="String" timeout="300">
+		/* TsbGoods.deleteWmsStockHst */
+		DELETE FROM TB_WMS_STOCK_HST
+		WHERE JOBDATE <![CDATA[<=]]> #{jobdate} 
+	</delete>
+	
+	<!-- TB_IF_PRODUCTSKU_HST 저장 -->
+	<insert id="createWmsStockHst"  parameterType="String" timeout="300">
+		/* TsbGoods.createWmsStockHst */
+		INSERT INTO TB_WMS_STOCK_HST(
+		       JOBDATE
+		      ,PRODUCT_NO      
+		      ,SKU_CODE        
+		      ,LOC_QTY         
+		      ,PICKING_QTY     
+		      ,EOUT_PICKING_QTY
+		)
+		SELECT #{jobdate}
+		      ,PRODUCT_NO      
+		      ,SKU_CODE        
+		      ,LOC_QTY         
+		      ,PICKING_QTY     
+		      ,EOUT_PICKING_QTY
+		FROM TB_WMS_STOCK
+	</insert>
+	
 	<!-- TB_GOODS_STOCK 삭제 -->
 	<delete id="deleteGoodsDispStock" timeout="300">
 		/* TsbGoods.deleteGoodsDispStock */
@@ -1763,46 +1842,31 @@
 		     , 0 AS UPD_NO
 		     , NOW() AS UPD_DT
 		FROM (
-		      SELECT GOODS_CD
-		           , OPT_CD
-		           , OPT_CD1
-		           , OPT_CD2
-		           , SKU_MODEL_NO
-		           , PRODUCT_NO
-		           , PRODUCT_CODE
-		           , SUM(CURR_STOCK_QTY) AS CURR_STOCK_QTY
-		           , STORE_STOCK_QTY
-		           , IFNULL((SELECT (MAX(DISP_ORD) + 1) AS DISP_ORD 
-		                  FROM TB_OPTION WHERE GOODS_CD = Z.GOODS_CD) , ROW_NUMBER() OVER(PARTITION BY GOODS_CD ORDER BY OPT_CD)) AS DISP_ORD
-		           , ERP_STOCK_LINK_YN
-		       FROM (
-		           SELECT B.GOODS_CD
-		                , A.SKUCODE AS OPT_CD
-		                , MAX(A.OPTION1) AS OPT_CD1
-		                , MAX(A.OPTION2) AS OPT_CD2
-		                , MAX(A.SKUMODELNO) AS SKU_MODEL_NO
-		                , MAX(E.PRODUCT_NO) AS PRODUCT_NO
-		                , MAX(E.PRODUCT_CODE) AS PRODUCT_CODE
-		                , ROUND(GREATEST(A.SELLINGSTOCKAMOUNT, 0) * (IFNULL(D.STOCK_APPL_RATE, 0)/100)) AS CURR_STOCK_QTY
-		                , MAX(E.STORE_STOCK_QTY) AS STORE_STOCK_QTY
-		                , MAX(B.ERP_STOCK_LINK_YN) AS ERP_STOCK_LINK_YN
-		                , D.DELV_LOC_CD
-		                , D.STOCK_APPL_RATE
-		           FROM TB_IF_PRODUCTSKU A 
-		           INNER JOIN TB_OPTION E ON A.SKUCODE = E.OPT_CD
-		                                  AND A.PRODUCTNO = E.PRODUCT_NO
-		           INNER JOIN TB_GOODS B ON E.GOODS_CD = B.GOODS_CD
-		                                 AND B.SELF_GOODS_YN = 'Y'
-		           INNER JOIN TB_STOCK_SYNC_BASE C ON B.BRAND_CD = C.BRAND_CD
-		                                           AND C.STOCK_SYNC_YN = 'Y'
-		           INNER JOIN TB_DELIVERY_LOC D ON B.SUPPLY_COMP_CD = D.SUPPLY_COMP_CD
-		                                        AND C.DELV_LOC_CD = D.DELV_LOC_CD
-		                                        AND D.USE_YN = 'Y'
-		           WHERE 1 = 1
-		           GROUP BY B.GOODS_CD, A.SKUCODE, D.DELV_LOC_CD, D.STOCK_APPL_RATE
-		           ) Z
-		       GROUP BY GOODS_CD, OPT_CD, OPT_CD1 , OPT_CD2, SKU_MODEL_NO, PRODUCT_NO, PRODUCT_CODE, STORE_STOCK_QTY, ERP_STOCK_LINK_YN
-		      ) Y
+		      SELECT B.GOODS_CD
+		           , A.SKU_CODE AS OPT_CD
+		           , E.OPT_CD1
+		           , E.OPT_CD2
+		           , E.SKU_MODEL_NO
+		           , E.PRODUCT_NO
+		           , E.PRODUCT_CODE
+		           , ROUND((GREATEST(A.LOC_QTY, 0) -  GREATEST(A.PICKING_QTY, 0)  - GREATEST(A.EOUT_PICKING_QTY, 0)) * (IFNULL(D.STOCK_APPL_RATE, 0)/100)) AS CURR_STOCK_QTY
+		           , E.STORE_STOCK_QTY
+		           , E.DISP_ORD
+		           , B.ERP_STOCK_LINK_YN
+		      FROM TB_WMS_STOCK A
+		      INNER JOIN TB_OPTION E ON A.PRODUCT_NO = E.PRODUCT_NO
+		                             AND A.SKU_CODE = E.OPT_CD
+		      INNER JOIN TB_GOODS B ON E.GOODS_CD = B.GOODS_CD
+		                            AND B.SELF_GOODS_YN = 'Y'
+		                            AND B.ERP_STOCK_LINK_YN = 'Y'
+		      INNER JOIN TB_STOCK_SYNC_BASE C ON B.BRAND_CD = C.BRAND_CD
+		                                      AND C.STOCK_SYNC_YN = 'Y'
+		      INNER JOIN TB_DELIVERY_LOC D ON B.SUPPLY_COMP_CD = D.SUPPLY_COMP_CD
+		                                   AND C.DELV_LOC_CD = D.DELV_LOC_CD
+		                                   AND D.USE_YN = 'Y'
+		                                   AND D.DELV_LOC_CD = 'DL001'    -- WMS 매장코드
+		      WHERE 1 = 1
+		     ) Z
 	</insert>
 	
 	<!-- 입점상품 SELL_QTY 목록 조회 -->
@@ -1873,8 +1937,8 @@
 	<!-- 상품 재고 정보 저장 -->
 	<update id="updateStock" parameterType="Option"  timeout="300">
 		/* TsbGoods.updateStock */
-		UPDATE TB_STOCK
-		SET CURR_ON_STOCK_QTY = GREATEST(CURR_ON_STOCK_QTY - #{saleStockQty},0)
+		UPDATE TB_OPTION
+		SET CURR_STOCK_QTY = GREATEST(CURR_STOCK_QTY - #{saleStockQty},0)
 		  , UPD_NO = #{updNo}
 		  , UPD_DT = NOW()
 		WHERE GOODS_CD = #{goodsCd}
@@ -1920,7 +1984,7 @@
 		     , B.PRODUCT_NO
 		     , B.PRODUCT_CODE
 		     , B.BASE_STOCK_QTY
-		     , B.CURR_STOCK_QTY
+		     , 0 AS CURR_STOCK_QTY
 		     , B.STORE_STOCK_QTY
 		     , B.ADD_PRICE
 		     , B.SOLDOUT_YN
@@ -1932,7 +1996,8 @@
 		     , B.UPD_NO
 		     , B.UPD_DT
 		FROM   TB_GOODS A, TB_OPTION B
-		WHERE  A.GOODS_CD = B.GOODS_CD
+		WHERE  A.ERP_STOCK_LINK_YN = 'Y'
+		AND    A.GOODS_CD = B.GOODS_CD
 	</insert>
 	
 	<!-- TB_OPTION_SYNC_TMP => TB_OPTION_SYNC 변경적용-->
@@ -2044,11 +2109,11 @@
 		WHERE ORD_DTL_NO IN (
 		                     SELECT OD.ORD_DTL_NO
 		                     FROM TB_ORDER_DETAIL OD
-		                        , TB_ORDER_DETAIL_ITEM ODI
+		                        -- , TB_ORDER_DETAIL_ITEM ODI
 		                        , TB_GOODS G
 		                     WHERE OD.ORD_DTL_NO = ODI.ORD_DTL_NO
-		                     AND OD.ORD_DTL_STAT IN ('G013_10','G013_20') -- 입금대기, 결제완료
-		                     AND ODI.ITEM_CD = G.GOODS_CD
+		                     AND OD.ORD_DTL_STAT IN ('G013_10','G013_20','G013_25','G013_30','G013_35','G013_40') -- 입금대기, 결제완료, 교환대기, 상품준비중,출고처지정,배송준비중
+		                     AND OD.GOODS_CD = G.GOODS_CD
 		                     AND G.SELF_GOODS_YN ='Y'
 		                    )
 	</insert>
@@ -2087,7 +2152,7 @@
 		      FROM TB_ORDER_DETAIL OD
 		         , TB_ORDER_DETAIL_ITEM ODI
 		      WHERE OD.ORD_DTL_NO = ODI.ORD_DTL_NO
-		      AND OD.ORD_DTL_STAT IN ('G013_10','G013_20') -- 입금대기, 결제완료
+		      AND OD.ORD_DTL_STAT IN ('G013_10','G013_20','G013_25','G013_30','G013_35','G013_40') -- 입금대기, 결제완료, 교환대기, 상품준비중,출고처지정,배송준비중
 		      AND EXISTS (SELECT 1 FROM TB_OPTION X WHERE X.GOODS_CD = ODI.ITEM_CD AND X.OPT_CD = ODI.OPT_CD)
 		      GROUP BY ODI.ITEM_CD, ODI.OPT_CD, OD.ORD_DTL_NO, OD.AGENT_ORDER_ID, OD.EXTMALL_ORDER_ID
 		     ) A

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

@@ -234,4 +234,25 @@
 		-- AND B.PRODUCTNO  IN (16561091 ,16561090)   -- 테스트용
 	</select>
 	
+		<!-- WMS view 재고 테이블 조회   -->
+	<select id="getWmsStockList"  resultType="WmsStock">
+		/* TsbWmsGoods.getWmsStockList */
+		SELECT PRODUCT_NO 
+		     , SKU_CODE
+		     , LOC_QTY
+		     , PICKING_QTY
+		     , EOUT_PICKING_QTY
+		FROM (
+		     SELECT PRODUCT_NO
+		          , SKU_CODE
+		          , SUM(LOC_QTY) AS LOC_QTY
+		          , SUM(PICKING_QTY) AS PICKING_QTY 
+		          , SUM(EOUT_PICKING_QTY) AS EOUT_PICKING_QTY
+		     FROM iSTYLE24_WMS.DBO.VW_STOCK_BY_LOCCODE
+		     GROUP BY PRODUCT_NO, SKU_CODE
+		) Z
+		WHERE 1 = 1
+		AND LOC_QTY - PICKING_QTY - EOUT_PICKING_QTY > 0
+	</select>
+	
 </mapper>