Quellcode durchsuchen

Merge branch 'stage_tsit' of https://style24@dev.azure.com/style24/style24/_git/style24.batch into stage_tsit

smlee@yes24.com vor 4 Jahren
Ursprung
Commit
82cb7ce06d

+ 3 - 135
src/main/java/com/style24/batch/biz/job/shoplinker/TsbShoplinkerStockAllJob.java

@@ -41,7 +41,7 @@ public class TsbShoplinkerStockAllJob extends TsbAbstractJob<Collection<Shoplink
 	@Override
 	public Collection<ShoplinkerGoods> read() throws Exception {
 
-		// 재고 전체전송목록 - 1000 건씩 가져옴
+		// 재고 전체전송목록 - 1300 건씩 가져옴
 		return shoplinkerService.getSyncStockAllList();
 	}
 
@@ -54,28 +54,9 @@ public class TsbShoplinkerStockAllJob extends TsbAbstractJob<Collection<Shoplink
 	public String write(Collection<ShoplinkerGoods> stockList) throws Exception {
 		ShoplinkerGoods regMap = new ShoplinkerGoods();
 
-		// xml 생성경로
-		String xmlPath = env.getProperty("shoplinker.xml.path");
-
-		// 샵링커 기본폴더 존재여부 확인
-		String slFolder = GagaFileUtil.getConcatenationPath(xmlPath);
-		File slPath = new File(slFolder);
-		if (!slPath.exists()) {
-			slPath.mkdir();
-		}
-		//하위폴더존재확인(재고)
-		slFolder = GagaFileUtil.getConcatenationPath(xmlPath+"/stock");
-		slPath = new File(slFolder);
-		if (!slPath.exists()) {
-			slPath.mkdir();
-		}
-
 		if (stockList != null && !stockList.isEmpty()) {
 
-			
-
 			// 2. xml 파일 정보세팅
-			String toDtTime = GagaDateUtil.getTodayDateTime();
 			String customerId = env.getProperty("shoplinker.customer_id");
 			regMap.setSendYn("N");													// 성공이 아닐경우만 개별업데이트
 			regMap.setAllUpdYn("N");												// 성공이 아닐경우만 개별업데이트
@@ -86,13 +67,8 @@ public class TsbShoplinkerStockAllJob extends TsbAbstractJob<Collection<Shoplink
 
 			try {
 				StringBuilder sbRequest;
-				int qty = 0;
 				for (ShoplinkerGoods map : stockList) {
 					
-					// 21.10.18 재고비율 추가 - 샵링커에 전송 및 전송이력에는 재고비율 수량으로 저장함
-					// 참고)재고 마스터 테이블에는 원 수량임(동기화 처리시에도 원 수량으로 됨)
-					qty = GetStockQtyForBrand(map, false);
-
 					// xml 데이터 세팅
 					sbRequest = new StringBuilder();
 					sbRequest.append("<?xml version=\"1.0\" encoding=\"euc-kr\"?>\n");
@@ -102,14 +78,14 @@ public class TsbShoplinkerStockAllJob extends TsbAbstractJob<Collection<Shoplink
 					sbRequest.append("		<customer_id>").append(customerId).append("</customer_id>\n");
 					sbRequest.append("		<mall_update_yn>N</mall_update_yn>\n");
 					sbRequest.append("		<partner_product_id><![CDATA[").append(map.getOptCd()).append("]]></partner_product_id>\n");
-					sbRequest.append("		<quantity>").append(qty).append("</quantity>\n");
+					sbRequest.append("		<quantity>").append(map.getQuantity()).append("</quantity>\n");
 
 					sbRequest.append("	</product>\n");
 					sbRequest.append("</shoplinker>\n");
 
 					regMap.setGoodsCd(map.getGoodsCd());
 					regMap.setOptCd(map.getOptCd());
-					regMap.setQuantity(qty);
+					regMap.setQuantity(map.getQuantity());
 
 					// 3. api 호출 및 결과 history 저장
 					callGoodsRegApi(regMap , sbRequest, map.getOptCd());
@@ -203,112 +179,4 @@ public class TsbShoplinkerStockAllJob extends TsbAbstractJob<Collection<Shoplink
 		return succCnt;
 	}
 	
-	/**
-	 * 샵링커 브랜드별 재고비율
-	 *
-	 * @return
-	 * @author jmh
-	 * @since  2021. 10. 18
-	 */
-	private int GetStockQtyForBrand(ShoplinkerGoods map, boolean isFirst)
-    {
-        int resultQty = 0;
-        String brandCd = map.getBrandCd();
-        int qty = map.getQuantity();
-
-        if (brandCd.equals("S0016") || brandCd.equals("S0018") || brandCd.equals("S0012"))
-        {
-            if (qty >= 0 && qty <= 5)
-            {
-                resultQty = isFirst ? 1 : 0;
-            }
-            else if (qty >= 6 && qty <= 29)
-            {
-                resultQty = (int)Math.floor(qty * 0.25);
-            }
-            else if (qty >= 30)
-            {
-                resultQty = (int)Math.floor(qty * 0.4);
-            }
-        }
-        else if (brandCd.equals("S0005"))
-        {
-            if (qty >= 0 && qty <= 3)
-            {
-                resultQty = isFirst ? 1 : 0;
-            }
-            else if (qty >= 4 && qty <= 29)
-            {
-                resultQty = (int)Math.floor(qty * 0.25);
-            }
-            else if (qty >= 30)
-            {
-                resultQty = (int)Math.floor(qty * 0.4);
-            }
-        }
-        else if (brandCd.equals("S0003") || brandCd.equals("S0004") || brandCd.equals("S0007") || brandCd.equals("S0001") || brandCd.equals("S0006"))
-        {
-            if (qty >= 0 && qty <= 3)
-            {
-                resultQty = isFirst ? 1 : 0;
-            }
-            else if (qty >= 4 && qty <= 29)
-            {
-                resultQty = (int)Math.ceil(qty * 0.25);
-            }
-            else if (qty >= 30)
-            {
-                resultQty = (int)Math.floor(qty * 0.4);
-            }
-        }
-        else if (brandCd.equals("S0013"))
-        {
-            if (qty >= 0 && qty <= 2)
-            {
-                resultQty = isFirst ? 1 : 0;
-            }
-            else if (qty >= 3 && qty <= 29)
-            {
-                resultQty = (int)Math.ceil(qty * 0.25);
-            }
-            else if (qty >= 30)
-            {
-                resultQty = (int)Math.floor(qty * 0.4);
-            }
-        }
-
-        else if (brandCd.equals("S0015"))
-        {
-            if (qty >= 0 && qty <= 2)
-            {
-                resultQty = isFirst ? 1 : 0;
-            }
-            else if (qty >= 3 && qty <= 29)
-            {
-                resultQty = (int)Math.ceil(qty * 0.25);
-            }
-            else if (qty >= 30)
-            {
-                resultQty = (int)Math.floor(qty * 0.4);
-            }
-        }
-
-        else 
-        {
-        	if (qty >= 0 && qty <= 2)
-            {
-                resultQty = isFirst ? 1 : 0;
-            }
-            else if (qty >= 3 && qty <= 29)
-            {
-                resultQty = (int)Math.ceil(qty * 0.25);
-            }
-            else if (qty >= 30)
-            {
-                resultQty = (int)Math.floor(qty * 0.4);
-            }
-        }
-        
-        return resultQty;
-    }
 }

+ 3 - 116
src/main/java/com/style24/batch/biz/job/shoplinker/TsbShoplinkerStockJob.java

@@ -92,13 +92,8 @@ public class TsbShoplinkerStockJob extends TsbAbstractJob<Collection<ShoplinkerG
 
 			try {
 				StringBuilder sbRequest;
-				int qty = 0;
 				for (ShoplinkerGoods map : stockList) {
 					
-					// 21.10.18 재고비율 추가 - 샵링커에 전송 및 전송이력에는 재고비율 수량으로 저장함
-					// 참고)재고 마스터 테이블에는 원 수량임(동기화 처리시에도 원 수량으로 됨)
-					qty = GetStockQtyForBrand(map, false);
-
 					// xml 데이터 세팅
 					sbRequest = new StringBuilder();
 					sbRequest.append("<?xml version=\"1.0\" encoding=\"euc-kr\"?>\n");
@@ -108,14 +103,14 @@ public class TsbShoplinkerStockJob extends TsbAbstractJob<Collection<ShoplinkerG
 					sbRequest.append("		<customer_id>").append(customerId).append("</customer_id>\n");
 					sbRequest.append("		<mall_update_yn>N</mall_update_yn>\n");
 					sbRequest.append("		<partner_product_id><![CDATA[").append(map.getOptCd()).append("]]></partner_product_id>\n");
-					sbRequest.append("		<quantity>").append(qty).append("</quantity>\n");
+					sbRequest.append("		<quantity>").append(map.getQuantity()).append("</quantity>\n");
 
 					sbRequest.append("	</product>\n");
 					sbRequest.append("</shoplinker>\n");
 
 					regMap.setGoodsCd(map.getGoodsCd());
 					regMap.setOptCd(map.getOptCd());
-					regMap.setQuantity(qty);
+					regMap.setQuantity(map.getQuantity());
 
 					// 3. api 호출 및 결과 history 저장
 					callGoodsRegApi(regMap , sbRequest, map.getOptCd());
@@ -203,113 +198,5 @@ public class TsbShoplinkerStockJob extends TsbAbstractJob<Collection<ShoplinkerG
 
 		return succCnt;
 	}
-	
-	/**
-	 * 샵링커 브랜드별 재고비율
-	 *
-	 * @return
-	 * @author jmh
-	 * @since  2021. 10. 18
-	 */
-	private int GetStockQtyForBrand(ShoplinkerGoods map, boolean isFirst)
-    {
-        int resultQty = 0;
-        String brandCd = map.getBrandCd();
-        int qty = map.getQuantity();
-
-        if (brandCd.equals("S0016") || brandCd.equals("S0018") || brandCd.equals("S0012"))
-        {
-            if (qty >= 0 && qty <= 5)
-            {
-                resultQty = isFirst ? 1 : 0;
-            }
-            else if (qty >= 6 && qty <= 29)
-            {
-                resultQty = (int)Math.floor(qty * 0.25);
-            }
-            else if (qty >= 30)
-            {
-                resultQty = (int)Math.floor(qty * 0.4);
-            }
-        }
-        else if (brandCd.equals("S0005"))
-        {
-            if (qty >= 0 && qty <= 3)
-            {
-                resultQty = isFirst ? 1 : 0;
-            }
-            else if (qty >= 4 && qty <= 29)
-            {
-                resultQty = (int)Math.floor(qty * 0.25);
-            }
-            else if (qty >= 30)
-            {
-                resultQty = (int)Math.floor(qty * 0.4);
-            }
-        }
-        else if (brandCd.equals("S0003") || brandCd.equals("S0004") || brandCd.equals("S0007") || brandCd.equals("S0001") || brandCd.equals("S0006"))
-        {
-            if (qty >= 0 && qty <= 3)
-            {
-                resultQty = isFirst ? 1 : 0;
-            }
-            else if (qty >= 4 && qty <= 29)
-            {
-                resultQty = (int)Math.ceil(qty * 0.25);
-            }
-            else if (qty >= 30)
-            {
-                resultQty = (int)Math.floor(qty * 0.4);
-            }
-        }
-        else if (brandCd.equals("S0013"))
-        {
-            if (qty >= 0 && qty <= 2)
-            {
-                resultQty = isFirst ? 1 : 0;
-            }
-            else if (qty >= 3 && qty <= 29)
-            {
-                resultQty = (int)Math.ceil(qty * 0.25);
-            }
-            else if (qty >= 30)
-            {
-                resultQty = (int)Math.floor(qty * 0.4);
-            }
-        }
-
-        else if (brandCd.equals("S0015"))
-        {
-            if (qty >= 0 && qty <= 2)
-            {
-                resultQty = isFirst ? 1 : 0;
-            }
-            else if (qty >= 3 && qty <= 29)
-            {
-                resultQty = (int)Math.ceil(qty * 0.25);
-            }
-            else if (qty >= 30)
-            {
-                resultQty = (int)Math.floor(qty * 0.4);
-            }
-        } 
-        
-        else 
-        {
-        	if (qty >= 0 && qty <= 2)
-            {
-                resultQty = isFirst ? 1 : 0;
-            }
-            else if (qty >= 3 && qty <= 29)
-            {
-                resultQty = (int)Math.ceil(qty * 0.25);
-            }
-            else if (qty >= 30)
-            {
-                resultQty = (int)Math.floor(qty * 0.4);
-            }
-        }
-
-        return resultQty;
-    }
+		
 }

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

@@ -188,6 +188,7 @@
 		  , A.VIDEO_GB_S = B.VIDEO_GB_S
 		  , A.VIDEO_VAL_S = B.VIDEO_VAL_S
 		WHERE A.GOODS_CD = B.GOODS_CD
+		AND A.MAIN_COLOR_CD = A.OPT_CD1
 	</update>
 
 	<!-- 상품검색 temp 상품 즉시적용가 생성 -->

+ 60 - 22
src/main/java/com/style24/persistence/mybatis/shop/TsbShoplinker.xml

@@ -37,10 +37,9 @@
 
 	<!-- 재고 전체 전송 - 전송예정 목록-->
 	<select id="getSyncStockAllList" parameterType="ShoplinkerGoods" resultType="ShoplinkerGoods">
-		/*TsbCustomerDao.getSyncStockAllList*/
+		/*TsaShoplinkerDao.getSyncStockAllList*/
 		SELECT
-			TG.ITEMKIND_CD
-			, A.GOODS_CD
+			A.GOODS_CD
 			, A.OPT_CD
 			, A.STOCK_QTY AS QUANTITY
 			, TG.BRAND_CD
@@ -69,40 +68,79 @@
 		WHERE 1=1  
 		AND   A.SEND_YN = 'N'
 		AND   A.SEND_DT IS NULL
-		ORDER BY 6
-		LIMIT 1000
+		ORDER BY 5
+		LIMIT 1300
 
 	</select>
 	
 	<!-- 재고 전송예정 목록-->
 	<select id="getSyncStockList" parameterType="ShoplinkerGoods" resultType="ShoplinkerGoods">
-		/*TsbCustomerDao.getSyncStockList*/
+		/*TsaShoplinkerDao.getSyncStockList*/
 		SELECT
-			TG.ITEMKIND_CD
-			, A.GOODS_CD
+			A.GOODS_CD
 			, A.OPT_CD
 			, A.STOCK_QTY AS QUANTITY
-			, TG.BRAND_CD
 		FROM   SHOPLINKER_STOCK A
-		 INNER JOIN TB_GOODS TG ON A.GOODS_CD = TG.GOODS_CD
 		WHERE  A.SEND_YN = 'N'
 
 	</select>
 
 	<!-- 재고 전체 동기화 -->
 	<update id="updateSyncStock" timeout="600">
-		UPDATE SHOPLINKER_STOCK A
-		SET UPD_DT = NOW()
-			, SEND_YN = 'N'
-			, STOCK_QTY = ( SELECT VW.CURR_STOCK_QTY  FROM VW_STOCK VW
-							WHERE VW.GOODS_CD = A.GOODS_CD  AND VW.OPT_CD = A.OPT_CD)
-		WHERE 1=1
-		AND EXISTS ( SELECT VW.OPT_CD
-		            FROM VW_STOCK VW
-		            WHERE VW.GOODS_CD = A.GOODS_CD
-		            AND VW.OPT_CD = A.OPT_CD
-		            AND VW.CURR_STOCK_QTY != A.STOCK_QTY
-		       )
+		/*TsaShoplinkerDao.updateSyncStock*/
+		<![CDATA[
+			UPDATE SHOPLINKER_STOCK A, (SELECT  
+											SS.GOODS_CD , SS.OPT_CD
+											, CASE 
+												WHEN G.BRAND_CD = 'S0016' OR G.BRAND_CD = 'S0018' OR G.BRAND_CD = 'S0012' THEN
+													CASE 
+														WHEN VW.CURR_STOCK_QTY >= 0 AND VW.CURR_STOCK_QTY <= 5 THEN 0
+													 	WHEN VW.CURR_STOCK_QTY >= 6 AND VW.CURR_STOCK_QTY <= 29 THEN FLOOR(VW.CURR_STOCK_QTY * 0.25)
+														WHEN VW.CURR_STOCK_QTY >= 30 THEN FLOOR(VW.CURR_STOCK_QTY * 0.4)
+													END
+												WHEN G.BRAND_CD = 'S0005' THEN	 
+													CASE 	 
+														WHEN VW.CURR_STOCK_QTY >= 0 AND VW.CURR_STOCK_QTY <= 3 THEN 0
+														WHEN VW.CURR_STOCK_QTY >= 4 AND VW.CURR_STOCK_QTY <= 29 THEN FLOOR(VW.CURR_STOCK_QTY * 0.25)
+														WHEN VW.CURR_STOCK_QTY >= 30 THEN FLOOR(VW.CURR_STOCK_QTY * 0.4)
+													END
+												WHEN G.BRAND_CD = 'S0003' OR G.BRAND_CD = 'S0004' OR G.BRAND_CD = 'S0007' OR G.BRAND_CD = 'S0001' OR G.BRAND_CD = 'S0006' THEN
+													CASE	 
+														WHEN VW.CURR_STOCK_QTY >= 0 AND VW.CURR_STOCK_QTY <= 3 THEN 0
+														WHEN VW.CURR_STOCK_QTY >= 4 AND VW.CURR_STOCK_QTY <= 29 THEN CEIL(VW.CURR_STOCK_QTY * 0.25)
+														WHEN VW.CURR_STOCK_QTY >= 30 THEN FLOOR(VW.CURR_STOCK_QTY * 0.4)
+													END
+												WHEN G.BRAND_CD = 'S0013' THEN	 
+													CASE	 
+														WHEN VW.CURR_STOCK_QTY >= 0 AND VW.CURR_STOCK_QTY <= 2 THEN 0
+														WHEN VW.CURR_STOCK_QTY >= 3 AND VW.CURR_STOCK_QTY <= 29 THEN CEIL(VW.CURR_STOCK_QTY * 0.25)
+														WHEN VW.CURR_STOCK_QTY >= 30 THEN FLOOR(VW.CURR_STOCK_QTY * 0.4)
+													END
+												WHEN G.BRAND_CD = 'S0015' THEN	 
+													CASE	 
+														WHEN VW.CURR_STOCK_QTY >= 0 AND VW.CURR_STOCK_QTY <= 2 THEN 0
+													 	WHEN VW.CURR_STOCK_QTY >= 3 AND VW.CURR_STOCK_QTY <= 29 THEN CEIL(VW.CURR_STOCK_QTY * 0.25)
+													 	WHEN VW.CURR_STOCK_QTY >= 30 THEN FLOOR(VW.CURR_STOCK_QTY * 0.4)
+													END
+												ELSE 
+													CASE
+														WHEN VW.CURR_STOCK_QTY >= 0 AND VW.CURR_STOCK_QTY <= 2 THEN 0
+														WHEN VW.CURR_STOCK_QTY >= 3 AND VW.CURR_STOCK_QTY <= 29 THEN CEIL(VW.CURR_STOCK_QTY * 0.25)
+														WHEN VW.CURR_STOCK_QTY >= 30 THEN FLOOR(VW.CURR_STOCK_QTY * 0.4)
+													END
+											  END AS NEW_STOCK
+										FROM SHOPLINKER_STOCK SS
+										INNER JOIN VW_STOCK VW ON SS.GOODS_CD = VW.GOODS_CD AND SS.OPT_CD = VW.OPT_CD 
+										INNER JOIN TB_GOODS G ON SS.GOODS_CD = G.GOODS_CD ) B
+										
+				SET UPD_DT = NOW()
+					, SEND_YN = 'N'
+					, A.STOCK_QTY = B.NEW_STOCK
+			
+			WHERE 	A.GOODS_CD = B.GOODS_CD 
+			AND 	A.OPT_CD = B.OPT_CD
+			AND 	A.STOCK_QTY != B.NEW_STOCK
+		]]>
 	</update>
 
 	<!-- 재고 정보 수정 -->

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

@@ -180,7 +180,7 @@ cron:
 
     # 샵링커
     shoplinker:
-        stock.sendAll: 0 0/5 * * * *        #재고 전체전송(특별한날만 사용)
+        stock.sendAll: 0 0/4 * * * *        #재고 전체전송(특별한날만 사용)
         stock.send10: 0 0 10 * * *          #재고 10시 (1일 1회)
         stock.send15: 0 20 15 * * *         #재고 15시 (1일 1회)
         order.receive: 2 22 2 29 2 ?        #주문 (평일 5시 ~ 15시 5분에 실행)