Jelajahi Sumber

wms 옵션만 추가- 작업중(임시)

jmh 4 tahun lalu
induk
melakukan
8f68ab0f7d

+ 19 - 11
src/main/java/com/style24/batch/biz/dao/TsbGoodsDao.java

@@ -2,12 +2,14 @@ package com.style24.batch.biz.dao;
 
 import java.util.Collection;
 
+import com.gagaframework.web.parameter.GagaMap;
 import com.style24.core.support.annotation.ShopDs;
 import com.style24.persistence.domain.Coupon;
 import com.style24.persistence.domain.Goods;
 import com.style24.persistence.domain.GoodsIfIncomelot;
 import com.style24.persistence.domain.GoodsIfIncomelotitem;
 import com.style24.persistence.domain.GoodsIfMeasurement;
+import com.style24.persistence.domain.GoodsIfProductsku;
 import com.style24.persistence.domain.GoodsSafeNo;
 import com.style24.persistence.domain.GoodsSummary;
 import com.style24.persistence.domain.IfBrand;
@@ -17,8 +19,6 @@ import com.style24.persistence.domain.Option;
 import com.style24.persistence.domain.ReinboundInform;
 import com.style24.persistence.domain.WmsStock;
 
-import com.gagaframework.web.parameter.GagaMap;
-
 /**
  * 상품 Dao
  *
@@ -346,15 +346,14 @@ public interface TsbGoodsDao {
 //	 */
 //	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 createIfProductSku(GagaMap dataMap);
+
 //	/**
 //	 * TB_IF_PRODUCTSKU 저장
 //	 *
@@ -731,6 +730,15 @@ public interface TsbGoodsDao {
 	 */
 	int createVwStock();
 
+	
+	/**
+	 * 입고상품 저장 - productsku
+	 *
+	 * @author jmh
+	 * @since 2021. 09. 27
+	 */
+	void saveGoodsIfProductsku(GoodsIfProductsku goodsIfProductsku);
+
 	/**
 	 * 입고상품중 온라인 옵션이 없는 상품옵션 추가
 	 *

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

@@ -6,6 +6,7 @@ import com.style24.core.support.annotation.WmsDs;
 import com.style24.persistence.domain.GoodsIfIncomelot;
 import com.style24.persistence.domain.GoodsIfIncomelotitem;
 import com.style24.persistence.domain.GoodsIfMeasurement;
+import com.style24.persistence.domain.GoodsIfProductsku;
 import com.style24.persistence.domain.IfBrand;
 import com.style24.persistence.domain.IfProduct;
 import com.style24.persistence.domain.IfProvider;
@@ -138,5 +139,15 @@ public interface TsbWmsGoodsDao {
 	 * @since 2021. 06. 08
 	 */
 	void saveWmsIfPurchaseorderbrandXref(IfPurchaseorderbrandXref ifPurchaseorderbrandXref);
+
+	
+	/**
+	 * 입고 목록 - Productsku
+	 *
+	 * @param jobdate
+	 * @author jmh
+	 * @since 2021. 09. 27
+	 */
+	Collection<GoodsIfProductsku> getWmsProductskuList(String jobdate);
 	
 }

+ 0 - 66
src/main/java/com/style24/batch/biz/job/goods/TsbGoodsWmsIncomelotOptionJob.java

@@ -1,66 +0,0 @@
-package com.style24.batch.biz.job.goods;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import com.gagaframework.web.util.GagaDateUtil;
-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.GoodsIfIncomelotitem;
-
-import lombok.extern.slf4j.Slf4j;
-
-/**
- * WMS 입고 수신
- *
- * @author eskim
- * @since 2021. 01. 01
- */
-@Component
-@Slf4j
-public class TsbGoodsWmsIncomelotOptionJob extends TsbAbstractJob<GoodsIfIncomelotitem, GoodsIfIncomelotitem, GoodsIfIncomelotitem> {
-
-	@Autowired
-	private TsbGoodsService goodsService;
-
-	@Autowired
-	private TsbCommonService commonService;
-
-	private int succCnt = 0;
-	private int failCnt = 0;
-	private String jobdate = "";
-
-	@Override
-	public GoodsIfIncomelotitem read() throws Exception {
-
-		// WMS 동기화 옵션 여부 확인
-		String wmsSyncYn = commonService.getWmsSyncYn();
-		if ("N".equals(wmsSyncYn)) {
-			log.info("WMS 정보 동기화 미실행 {}, 연동여부 : {}", GagaDateUtil.getToday("yyyy-MM-dd HH:mm:ss"), wmsSyncYn);
-			return null;
-		}
-		GoodsIfIncomelotitem goodsIfIncomelotitem = new GoodsIfIncomelotitem();
-		return goodsIfIncomelotitem;
-	}
-
-	@Override
-	public GoodsIfIncomelotitem process(GoodsIfIncomelotitem goodsIfIncomelotitem) throws Exception {
-		return goodsIfIncomelotitem;
-	}
-
-	@Override
-	public GoodsIfIncomelotitem write(GoodsIfIncomelotitem goodsIfIncomelotitem) throws Exception {
-
-		//입고상품 중 옵션정보만 추가된 경우 (21.09.14 추가) 테스트용
-		goodsService.createGoodsOptionList_TEST();
-
-		return goodsIfIncomelotitem;
-	}
-
-	@Override
-	public void notify(GoodsIfIncomelotitem goodsIfIncomelotitem) throws Exception {
-		super.printResult(succCnt, failCnt);
-	}
-
-}

+ 94 - 0
src/main/java/com/style24/batch/biz/job/goods/TsbGoodsWmsProductskuJob.java

@@ -0,0 +1,94 @@
+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;
+
+import com.gagaframework.web.parameter.GagaMap;
+import com.gagaframework.web.util.GagaDateUtil;
+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.GoodsIfProductsku;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * WMS 입고 수신
+ *
+ * @author eskim
+ * @since 2021. 01. 01
+ */
+@Component
+@Slf4j
+public class TsbGoodsWmsProductskuJob extends TsbAbstractJob<Collection<GoodsIfProductsku>, Collection<GoodsIfProductsku>, String> {
+
+	@Autowired
+	private TsbGoodsService goodsService;
+
+	@Autowired
+	private TsbWmsGoodsService wmsGoodsService;
+		
+	@Autowired
+	private TsbCommonService commonService;
+
+	private int succCnt = 0;
+	private int failCnt = 0;
+	private String jobdate = "";
+
+	@Override
+	public Collection<GoodsIfProductsku> read() throws Exception {
+
+		// WMS 동기화 옵션 여부 확인
+		String wmsSyncYn = commonService.getWmsSyncYn();
+		if ("N".equals(wmsSyncYn)) {
+			log.info("WMS 정보 동기화 미실행 {}, 연동여부 : {}", GagaDateUtil.getToday("yyyy-MM-dd HH:mm:ss"), wmsSyncYn);
+			return null;
+		}
+		// wms 입고상품목록 조회 (등록, 수정건 조회)
+		jobdate = GagaDateUtil.getOffsetDate(-1);	//전일자
+		Collection<GoodsIfProductsku> wmsIfProductSukList = wmsGoodsService.getWmsProductskuList(jobdate);
+		System.out.println("HMJ :: "+wmsIfProductSukList.size());
+		return wmsIfProductSukList;
+	}
+
+	@Override
+	public Collection<GoodsIfProductsku> process(Collection<GoodsIfProductsku> wmsIfProductSukList) throws Exception {
+		return wmsIfProductSukList;
+	}
+
+	@Override
+	public String write(Collection<GoodsIfProductsku> wmsIfProductSukList) throws Exception {
+		/*
+		if( null != wmsIfProductSukList && !wmsIfProductSukList.isEmpty()) {
+			// 1. 입고상품 IF 테이블에 저장
+			List<GoodsIfProductsku> productSukList = new ArrayList<GoodsIfProductsku>();
+			GagaMap dataMap = new GagaMap();
+			int index = 0;
+			for (GoodsIfProductsku ifProductSku : wmsIfProductSukList) {
+	
+				productSukList.add(ifProductSku);
+				index++;
+				if (index % 20 == 0 || wmsIfProductSukList.size() == index) {
+					dataMap.set("productSukList", productSukList);
+					goodsService.saveGoodsWmsProductsku(dataMap);
+					productSukList.clear();
+				}
+			}
+			
+			// 2. 기존 등록된 상품중, 단품만 추가된 상품 저장
+			goodsService.createGoodsOptionList(jobdate);
+		}
+		*/
+		return "OK";
+	}
+
+	@Override
+	public void notify(String result) throws Exception {
+		// Do nothing
+	}
+}

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

@@ -7,6 +7,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import com.gagaframework.web.parameter.GagaMap;
+import com.gagaframework.web.util.GagaDateUtil;
 import com.style24.batch.biz.dao.TsbGoodsDao;
 import com.style24.batch.support.env.TsbConstants;
 import com.style24.core.biz.service.TscEnvsetService;
@@ -27,12 +29,8 @@ import com.style24.persistence.domain.ReinboundInform;
 import com.style24.persistence.domain.WmsStock;
 
 import io.netty.util.internal.StringUtil;
-
 import lombok.extern.slf4j.Slf4j;
 
-import com.gagaframework.web.parameter.GagaMap;
-import com.gagaframework.web.util.GagaDateUtil;
-
 /**
  * 상품 Service
  *
@@ -902,6 +900,18 @@ public class TsbGoodsService {
 	}
 
 	
+	/**
+	 * WMS 입고정보 연동 - 옵션
+	 *
+	 * @return
+	 * @author jmh
+	 * @since 2021. 09. 27
+	 */
+	@Transactional("shopTxnManager")
+	public void saveGoodsWmsProductsku(GagaMap dataMap) {
+		goodsDao.createIfProductSku(dataMap);
+	}
+	
 	/**
 	 * 입고상품중 온라인 옵션이 없는 상품옵션 추가
 	 *

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

@@ -6,12 +6,12 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import com.gagaframework.web.util.GagaDateUtil;
 import com.style24.batch.biz.dao.TsbWmsGoodsDao;
 import com.style24.batch.support.env.TsbConstants;
 import com.style24.persistence.domain.GoodsIfIncomelot;
 import com.style24.persistence.domain.GoodsIfIncomelotitem;
 import com.style24.persistence.domain.GoodsIfMeasurement;
+import com.style24.persistence.domain.GoodsIfProductsku;
 import com.style24.persistence.domain.IfBrand;
 import com.style24.persistence.domain.IfProduct;
 import com.style24.persistence.domain.IfProvider;
@@ -195,4 +195,16 @@ public class TsbWmsGoodsService {
 		return wmsGoodsDao.getWmsStockList();
 	}
 
+	
+	/**
+	 * WMS 입고 목록 - productsku
+	 *
+	 * @return
+	 * @author jmh
+	 * @since 2021. 09. 27
+	 */
+	public Collection<GoodsIfProductsku> getWmsProductskuList(String jobdate) {
+		return wmsGoodsDao.getWmsProductskuList(jobdate);
+	}
+	
 }

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

@@ -25,7 +25,7 @@ import com.style24.batch.biz.job.goods.TsbGoodsWmsBrandproviderJob;
 import com.style24.batch.biz.job.goods.TsbGoodsWmsGoodsJob;
 import com.style24.batch.biz.job.goods.TsbGoodsWmsGoodsStockJob;
 import com.style24.batch.biz.job.goods.TsbGoodsWmsIncomelotJob;
-import com.style24.batch.biz.job.goods.TsbGoodsWmsIncomelotOptionJob;
+import com.style24.batch.biz.job.goods.TsbGoodsWmsProductskuJob;
 import com.style24.batch.biz.job.goods.TsbGoodsWmsMeasurementJob;
 import com.style24.batch.biz.job.goods.TsbNaverAllEp;
 import com.style24.batch.biz.job.goods.TsbNaverSellEp;
@@ -119,7 +119,7 @@ public class TsbGoodsTask {
 	private TsbGoodsVwStockJob goodVwStockJob;
 
 	@Autowired
-	private TsbGoodsWmsIncomelotOptionJob goodsWmsIncomelotOptionJob;
+	private TsbGoodsWmsProductskuJob goodsWmsProductskuJob;
 	/**
 	 * 초 분 시 일 월 주(년)
 	 * 0 0 12 * * ?" : 아무 요일, 매월, 매일 12:00:00
@@ -415,14 +415,14 @@ public class TsbGoodsTask {
 
 	
 	/**
-	 * WMS 입고상품 연동 적용 - 임시 테스트용
+	 * WMS 입고상품 연동 적용 - 옵션추가분
 	 *
 	 * @throws Exception
 	 */
-	@Scheduled(cron = "${cron.goods.wms.incomelot.receive.option}")
+	@Scheduled(cron = "${cron.goods.wms.productsku.receive}")
 	//@Scheduled(fixedDelay = 3500000)
 	@Async
-	public void wmsIncomelotReceiveOptionJob() throws Exception {
-		goodsWmsIncomelotOptionJob.runById("cron.goods.wms.incomelot.receive.option");
+	public void wmsProductskuReceiveJob() throws Exception {
+		goodsWmsProductskuJob.runById("cron.goods.wms.productsku.receive");
 	}
 }

+ 5 - 5
src/main/java/com/style24/batch/biz/web/TsbGoodsController.java

@@ -26,7 +26,7 @@ import com.style24.batch.biz.job.goods.TsbGoodsWmsBrandproviderJob;
 import com.style24.batch.biz.job.goods.TsbGoodsWmsGoodsJob;
 import com.style24.batch.biz.job.goods.TsbGoodsWmsGoodsStockJob;
 import com.style24.batch.biz.job.goods.TsbGoodsWmsIncomelotJob;
-import com.style24.batch.biz.job.goods.TsbGoodsWmsIncomelotOptionJob;
+import com.style24.batch.biz.job.goods.TsbGoodsWmsProductskuJob;
 import com.style24.batch.biz.job.goods.TsbGoodsWmsMeasurementJob;
 import com.style24.batch.biz.job.goods.TsbNaverAllEp;
 import com.style24.batch.biz.job.goods.TsbNaverSellEp;
@@ -121,7 +121,7 @@ public class TsbGoodsController extends TscBaseController {
 	private TsbGoodsVwStockJob goodVwStockJob;
 	
 	@Autowired
-	private TsbGoodsWmsIncomelotOptionJob goodsWmsIncomelotOptionJob;
+	private TsbGoodsWmsProductskuJob goodsWmsProductskuJob;
 
 	/**
 	 * 상품 타이틀예약 적용 주기 : 시간배치 - 매시 1분 (소셜과 시간 중복)
@@ -408,14 +408,14 @@ public class TsbGoodsController extends TscBaseController {
 
 	
 	/**
-	 * WMS 입고상품 연동 적용 주기 - 테스트용 (기존 저장안된 것)
+	 * WMS 입고상품 연동, 옵션 추가분
 	 *
 	 * @throws Exception
 	 */
-	@GetMapping("/wms/incomelot/receive/option")
+	@GetMapping("/wms/productsku/receive")
 	@ResponseBody
 	public String receiveWmsIncomelotOption() throws Exception {
-		goodsWmsIncomelotOptionJob.runById("cron.goods.wms.incomelot.receive.option");
+		goodsWmsProductskuJob.runById("cron.goods.wms.productsku.receive");
 		return "OK";
 	}
 }

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

@@ -1682,7 +1682,7 @@
 		     , #{item.vendorskumodelno}
 		     , #{item.vendorskucode}
 		     , #{item.isvirtualstock}
-		     , #{item.datevirtualstock}
+		     , DATE_FORMAT(#{item.datevirtualstock}, '%Y-%m-%d %H:%i:%S')
 		     , #{item.skucode88}
 		     , NOW()
 		)

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

@@ -333,4 +333,38 @@
 		           );
 	</insert>
 	
+	
+	<!-- wms 입고 상품목록 PRODUCTSKU  -->
+	<select id="getWmsProductskuList" parameterType="String"  resultType="GoodsIfProductsku">
+		/* TsbWmsGoods.getWmsProductskuList */
+		SELECT 
+			B.SKUCODE
+			, B.SKUMODELNO
+			, B.PRODUCTNO
+			, B.PRODUCTCODE
+			, B.OPTION1
+			, B.OPTION2
+			, B.OPTION3
+			, B.SELLINGSTOCKAMOUNT
+			, B.SELLINGSTOCKTYPECD
+			, B.LIMITSTOCKAMOUNT
+			, B.VENDORSKUMODELNO
+			, B.VENDORSKUCODE
+			, B.ISVIRTUALSTOCK
+			, B.DATEVIRTUALSTOCK
+			, B.SKUCODE88
+		FROM iSTYLE24_WmsIf.dbo.TB_IF_INCOMELOTITEM A
+		LEFT OUTER JOIN iSTYLE24_WmsIf.dbo.TB_IF_PRODUCTSKU B ON A.PRODUCTNO  = B.PRODUCTNO 
+		                                                      AND A.SKUCODE = B.SKUCODE
+		WHERE 1 = 1 
+		<choose>
+		    <when test='jobdate != null and jobdate != ""'>
+		AND CONVERT(CHAR(8),A.DATEINCOME,112) = #{jobdate}
+		    </when>
+		    <otherwise>
+		AND CONVERT(CHAR(8),A.DATEINCOME,112) = CONVERT(CHAR(8),DATEADD(day,-1, GETDATE()),112)
+		    </otherwise>
+		</choose>
+	</select>
+	
 </mapper>

+ 1 - 1
src/main/resources/config/application-brdg.yml

@@ -66,7 +66,7 @@ cron:
             measurement.receive: 2 22 2 29 2 ?    #WMS 실측사이즈 수신
             brandprovider.send: 2 22 2 29 2 ?     #WMS 업체/브랜드 송신
             goods.send: 2 22 2 29 2 ?             #WMS 상품정보 송신
-            incomelot.receive.option: 2 22 2 29 2 ?      #WMS 입고상품 수신(임시테스트용)
+            productsku.receive: 2 22 2 29 2 ?     #WMS 입고상품 수신-option
         shop.stock.receive: 2 22 2 29 2 ?         #ERP 매장재고 수신
         search:
             all.create: 2 22 2 29 2 ?             #검색전체색인 생성

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

@@ -56,7 +56,7 @@ cron:
             measurement.receive: 2 22 2 29 2 ?     #WMS 실측사이즈 수신 (1일 1회)
             brandprovider.send: 2 22 2 29 2 ?       #WMS 업체/브랜드 송신 (1일 1회)
             goods.send: 2 22 2 29 2 ?              #WMS 상품정보 송신 (1일 1회)
-            incomelot.receive.option: 2 22 2 29 2 ?      #WMS 입고상품 수신(임시테스트용)
+            productsku.receive: 2 22 2 29 2 ?      #WMS 입고상품 수신-option
         shop.stock.receive: 2 22 2 29 2 ?           #ERP 매장재고 수신 (1시간 1회)
         search:
             all.create: 2 22 2 29 2 ?               #검색전체색인 생성 (1일 1회)

+ 1 - 1
src/main/resources/config/application-locp.yml

@@ -56,7 +56,7 @@ cron:
             measurement.receive: 2 22 2 29 2 ?     #WMS 실측사이즈 수신 (1일 1회)
             brandprovider.send: 2 22 2 29 2 ?       #WMS 업체/브랜드 송신 (1일 1회)
             goods.send: 2 22 2 29 2 ?              #WMS 상품정보 송신 (1일 1회)
-            incomelot.receive.option: 2 22 2 29 2 ?      #WMS 입고상품 수신(임시테스트용)
+            productsku.receive: 2 22 2 29 2 ?      #WMS 입고상품 수신-option
         shop.stock.receive: 2 22 2 29 2 ?           #ERP 매장재고 수신 (1시간 1회)
         search:
             all.create: 2 22 2 29 2 ?               #검색전체색인 생성 (1일 1회)

+ 1 - 1
src/main/resources/config/application-style.yml

@@ -66,7 +66,7 @@ cron:
             measurement.receive: 0 50 0 * * *     #WMS 실측사이즈 수신 (1일 1회)
             brandprovider.send: 0 0 1 * * *       #WMS 업체/브랜드 송신 (1일 1회)
             goods.send: 0 10 1 * * *              #WMS 상품정보 송신 (1일 1회)
-            incomelot.receive.option: 2 22 2 29 2 ?      #WMS 입고상품 수신(임시테스트용)
+            productsku.receive: 2 22 2 29 2 ?     #WMS 입고상품 수신-option
         #shop.stock.receive: 0 7 * * * *           #ERP 매장재고 수신 (1시간 1회). 직송매장 오픈 시 적용
         shop.stock.receive: 2 22 2 29 2 ?         #ERP 매장재고 수신 (1시간 1회)
         search: