Procházet zdrojové kódy

자사 상품 등록 쿼리 수정

eskim před 5 roky
rodič
revize
493d9912e9

+ 13 - 0
src/main/java/com/style24/persistence/mybatis/shop/TssBusiness.xml

@@ -328,4 +328,17 @@
 		ORDER  BY DELV_FEE_CD
 	</select>
 	
+	<!-- 브랜드 공급업체 목록 -->
+	<select id="getBrandSupplyList" parameterType="String" resultType="Brand">
+		/* TsaBusiness.getBrandSupplyList */
+		SELECT A.BRAND_CD
+		     , A.SUPPLY_COMP_CD
+		     , B.SUPPLY_COMP_NM
+		     , A.REG_NO
+		     , FN_GET_USER_NM(A.REG_NO) AS REG_NM
+		     , DATE_FORMAT(A.REG_DT, '%Y%m%d%H%i%S') AS REG_DT
+		FROM   TB_BRAND_SUPPLY A
+		INNER JOIN TB_SUPPLY_COMPANY B ON A.SUPPLY_COMP_CD = B.SUPPLY_COMP_CD
+		WHERE  BRAND_CD = #{brandCd}
+	</select>
 </mapper>

+ 12 - 7
src/main/java/com/style24/persistence/mybatis/shop/TssGoods.xml

@@ -2201,20 +2201,21 @@
 		FROM (
 		SELECT B.GOODS_CD
 		    , A.SKUCODE AS OPT_CD
-		    , MAX(A.OPTION1) AS OPT_CD1
+		    -- , MAX(A.OPTION1) AS OPT_CD1
 		    , MAX(A.OPTION2) AS OPT_CD2
 		    , MAX(A.SKUMODELNO) AS SKU_MODEL_NO
-		    , MAX(B.PRODUCT_NO) AS PRODUCT_NO
-		    , MAX(B.PRODUCT_CODE) AS PRODUCT_CODE
+		    , MAX(A.PRODUCTNO) AS PRODUCT_NO
+		    , MAX(A.PRODUCTCODE) AS PRODUCT_CODE
 		    , ROUND(GREATEST(A.SELLINGSTOCKAMOUNT, 0) * (IFNULL(D.STOCK_APPL_RATE, 0)/100)) AS CURR_STOCK_QTY
 		    , D.DELV_LOC_CD
 		    , D.STOCK_APPL_RATE
 		    , MAX(B.SUPPLY_COMP_CD) AS SUPPLY_COMP_CD
 		    , MAX(B.BRAND_CD) AS BRAND_CD
-		    , MAX(RIGHT(LEFT(REPLACE(A.SKUMODELNO,'-',''),12),2)) AS WMS_COLOR_CD
+		    , MAX(CASE WHEN INSTR(REPLACE(A.SKUMODELNO, ' ' , ''), 'F20') = 1 THEN MID(REPLACE(A.SKUMODELNO, ' ' , ''),13,2)
+		               WHEN INSTR(REPLACE(A.SKUMODELNO, ' ' , ''), '-') > 0 THEN MID(REPLACE(A.SKUMODELNO, ' ' , ''),12,2)
+		               ELSE MID(REPLACE(A.SKUMODELNO, ' ' , ''),11,2) END) AS WMS_COLOR_CD
 		FROM TB_IF_PRODUCTSKU A 
-		INNER JOIN TB_GOODS B ON A.PRODUCTCODE = B.PRODUCT_CODE 
-		                      AND B.SELF_GOODS_YN = 'Y'
+		INNER JOIN TB_GOODS B ON B.SELF_GOODS_YN = 'Y'
 		                      AND B.GOODS_TYPE = 'G056_N'
 		                      AND B.GOODS_CD = #{goodsCd}
 		INNER JOIN TB_STOCK_SYNC_BASE C ON B.BRAND_CD = C.BRAND_CD
@@ -2223,10 +2224,14 @@
 		                             AND C.DELV_LOC_CD = D.DELV_LOC_CD
 		                             AND D.USE_YN = 'Y'
 		WHERE 1 = 1
+		AND (CASE WHEN INSTR(REPLACE(A.SKUMODELNO, ' ' , ''), 'F20') = 1 THEN LEFT(REPLACE(A.SKUMODELNO, ' ' , ''),12)
+		          WHEN INSTR(REPLACE(A.SKUMODELNO, ' ' , ''), '-') > 0 THEN LEFT(REPLACE(A.SKUMODELNO, ' ' , ''),11)
+		          ELSE LEFT(REPLACE(A.SKUMODELNO, ' ' , ''),10) END) = #{goodsCd}
 		GROUP BY B.GOODS_CD, A.SKUCODE, D.DELV_LOC_CD, D.STOCK_APPL_RATE
 		) Z
 		INNER JOIN TB_WMS_COLOR_MAPPING F ON Z.SUPPLY_COMP_CD = F.SUPPLY_COMP_CD
-		                                  AND F.USE_YN ='Y'
+		                                  AND Z.WMS_COLOR_CD = F.WMS_COLOR_CD
+		                                  AND F.USE_YN ='Y' 
 		GROUP BY GOODS_CD, OPT_CD
 	</select>
 	

+ 8 - 1
src/main/java/com/style24/scm/biz/dao/TssBusinessDao.java

@@ -226,7 +226,6 @@ public interface TssBusinessDao {
 //	 */
 //	void deleteShipCompany(ShipCompany shipComp);
 
-
 	/**
 	 * 배송비정책 목록
 	 * @param DelvFeePolicy
@@ -235,4 +234,12 @@ public interface TssBusinessDao {
 	 */
 	Collection<DelvFeePolicy> getDeliveryFeePolicyList(DelvFeePolicy DelvFeePolicy);
 
+	/**
+	 * 브랜드 공급업체 목록
+	 * @param brandCd - 브랜드코드
+	 * @author eskim
+	 * @since 2021. 01. 21
+	 */
+	Collection<Brand> getBrandSupplyList(String brandCd);
+
 }

+ 9 - 0
src/main/java/com/style24/scm/biz/service/TssBusinessService.java

@@ -326,4 +326,13 @@ public class TssBusinessService {
 		return businessDao.getDeliveryFeePolicyList(delvFeePolicy);
 	}
 
+	/**
+	 * 브랜드 공급업체 목록
+	 * @param brandCd - 브랜드코드
+	 * @author eskim
+	 * @since 2021. 01. 21
+	 */
+	public Collection<Brand> getBrandSupplyList(String brandCd) {
+		return businessDao.getBrandSupplyList(brandCd);
+	}
 }

+ 30 - 26
src/main/java/com/style24/scm/biz/service/TssGoodsService.java

@@ -84,7 +84,7 @@ public class TssGoodsService {
 
 	@Autowired
 	private TssRendererService rendererService;
-	
+
 	@Autowired
 	private SafetyKoreaApi safetyKoreaApi;
 
@@ -96,7 +96,7 @@ public class TssGoodsService {
 	private static final String UPDATE_NO_PATTERN = "X";
 
 	private static final String SELF_GOOODS_AFTER = "STY";
-	
+
 	private static final int EXCEL_ROW_COUNT = 1000;
 
 	/**
@@ -493,7 +493,7 @@ public class TssGoodsService {
 
 		//건수
 		if (goodsList != null && goodsList.size() > EXCEL_ROW_COUNT) {
-			throw new IllegalStateException("엑셀 파일의 건수를 " +EXCEL_ROW_COUNT + "건 이하로 사용하세요.");
+			throw new IllegalStateException("엑셀 파일의 건수를 " + EXCEL_ROW_COUNT + "건 이하로 사용하세요.");
 		}
 
 		int index = 0;
@@ -639,10 +639,10 @@ public class TssGoodsService {
 				}
 			}
 		}
-		
+
 		// 판매기간설정 eskim
-		goods.setSellStdt(goods.getSellStYMD().replaceAll("-","") + goods.getSellStHH() + "0000");
-		goods.setSellEddt(goods.getSellEdYMD().replaceAll("-","") + goods.getSellEdHH() + "5959");
+		goods.setSellStdt(goods.getSellStYMD().replaceAll("-", "") + goods.getSellStHH() + "0000");
+		goods.setSellEddt(goods.getSellEdYMD().replaceAll("-", "") + goods.getSellEdHH() + "5959");
 
 		// 기본정보 변경
 		if ("Y".equals(goods.getChDataYn())) {
@@ -866,7 +866,7 @@ public class TssGoodsService {
 			//log.info("saveStock optCd={}", optCd);
 			if (StringUtils.isBlank(optCd)) {
 				int goodsOptionCnt = goodsDao.getGoodsOptionCount(stock);	// 등록 옵션수 count
-				optCd = goods.getGoodsCd() + "-" + (goodsOptionCnt+1);
+				optCd = goods.getGoodsCd() + "-" + (goodsOptionCnt + 1);
 			}
 
 			Option goodsStock = new Option();
@@ -1325,7 +1325,7 @@ public class TssGoodsService {
 			goods.setGoodsStat("10");
 			return goods;
 		}
-		
+
 		if (StringUtils.length(goodsMass.getGoodsNm()) > 66) {
 			goods.setGoodsRegMsg("상품명 길이 오류");
 			goods.setGoodsStat("10");
@@ -1482,7 +1482,7 @@ public class TssGoodsService {
 		float pntPrate = 0f;
 		float pntMrate = 0f;
 		float sellFeeRate = 0f;
-		String supplyCompCd = "";
+
 		for (Brand tmpBrand : brandList) {
 			if ("G009_10".equals(goods.getFormalGb())) {
 				pntPrate = tmpBrand.getPntPrate10();
@@ -1491,14 +1491,18 @@ public class TssGoodsService {
 				pntPrate = tmpBrand.getPntPrate20();
 				pntMrate = tmpBrand.getPntMrate20();
 			}
-			supplyCompCd = tmpBrand.getSupplyCompCd();	//업체코드
 			sellFeeRate = tmpBrand.getSellFeeRate();	//판매수수료율
 		}
 		goods.setPntPrate(pntPrate); // 포인트적립율(PC)
 		goods.setPntMrate(pntMrate); // 포인트적립율(MOBILE)
-		goods.setSupplyCompCd(supplyCompCd); // 업체코드
+
 		goods.setSellFeeRate(sellFeeRate); // 판매수수료율
 
+		// 업체코드 조회
+
+		Collection<Brand> brandSupplyList = businessService.getBrandSupplyList(goods.getBrandCd());
+		String supplyCompCd = brandSupplyList.iterator().next().getSupplyCompCd();
+		goods.setSupplyCompCd(supplyCompCd); // 업체코드
 		goodsMass.setSupplyCompCd(supplyCompCd); // 업체 코드
 
 		// 배송비 정책 적용
@@ -1700,7 +1704,7 @@ public class TssGoodsService {
 
 		//상품코드 생성
 		goods.setGoodsCd(this.getGoodsCodeSeq("E", goods.getBrandCd())); // 입점상품 상품코드 생성
-		
+
 		//배송비 정책 코드
 		goods.setDelvFeeCd(delvFeeCd);
 
@@ -1743,12 +1747,12 @@ public class TssGoodsService {
 				goods.setGoodsStat("10");
 				break;
 			}
-			
+
 			if (StringUtils.length(arrOptCd[0]) > 66) {
 				goods.setGoodsRegMsg("옵션(SKU) " + (i + 1) + "번째 옵션1명 길이 오류");
 				goods.setGoodsStat("10");
 			}
-			
+
 			// 옵션2 - 필수
 			if (StringUtils.isBlank(arrOptCd[1])) {
 				goods.setGoodsRegMsg("옵션(SKU) " + (i + 1) + "번째 옵션2 정보없음");
@@ -1905,7 +1909,7 @@ public class TssGoodsService {
 
 		// 전시카테고리 작업
 		goodsDao.createCategoryGoods(goods);
-		
+
 		// 안전안증작업
 		saveGoodsDetailCertNum(goods);
 
@@ -1974,13 +1978,13 @@ public class TssGoodsService {
 			goods.setGoodsStat("10");
 			return goods;
 		}
-		
+
 		if (StringUtils.length(goodsMass.getGoodsNm()) > 66) {
 			goods.setGoodsRegMsg("상품명 길이 오류");
 			goods.setGoodsStat("10");
 			return goods;
 		}
-				
+
 		goods.setGoodsNm(goodsMass.getGoodsNm().trim().replaceAll("(\\r\\n|\\r|\\n|\\n\\r)", ""));
 
 		if (!StringUtils.isBlank(goodsMass.getGoodsTnm())) {
@@ -1991,14 +1995,14 @@ public class TssGoodsService {
 			}
 			goods.setGoodsTnm(goodsMass.getGoodsTnm().trim().replaceAll("(\\r\\n|\\r|\\n|\\n\\r)", "")); // 상품 타이틀
 		}
-		
+
 		if (!StringUtils.isBlank(goodsMass.getGoodsSnm1())) {
 			if (StringUtils.length(goodsMass.getGoodsSnm1()) > 1000) {
 				goods.setGoodsRegMsg("상품검색명 길이 오류");
 				goods.setGoodsStat("10");
 				return goods;
 			}
-			
+
 			goods.setGoodsSnm1(goodsMass.getGoodsSnm1().trim().replaceAll("(\\r\\n|\\r|\\n|\\n\\r|\\s)", "")); // 상품 사용자 검색어
 		}
 
@@ -2020,7 +2024,7 @@ public class TssGoodsService {
 			return goods;
 		}
 		goods.setItemkindNm(getItemkindList.iterator().next().getItemkindLeafNm());	//LEAF품목명
-		
+
 		// 성별
 		if (StringUtils.isBlank(goodsMass.getSexGb())) {
 			goods.setGoodsRegMsg("성별 오류");
@@ -2216,9 +2220,9 @@ public class TssGoodsService {
 			goods.setGoodsStat("10");
 			return goods;
 		}
-		
+
 		goods.setCertNum(goodsMass.getCertNum()); //안전인증번호
-		
+
 		goods.setGoodsType("G056_N"); //상품타입
 		goods.setDistributionGb("G065_20"); //유통구분
 		goods.setSelfGoodsYn("N"); // 자사상품여부
@@ -3048,7 +3052,7 @@ public class TssGoodsService {
 			delvFeePolicy.setSupplyCompCd(goods.getSupplyCompCd());
 			delvFeePolicy.setDelvFeeCd(goods.getDelvFeeCd());
 			delvFeePolicy.setUseYn("Y");
-			Collection<DelvFeePolicy> deliveryFeePolicyList =  businessService.getDeliveryFeePolicyList(delvFeePolicy);
+			Collection<DelvFeePolicy> deliveryFeePolicyList = businessService.getDeliveryFeePolicyList(delvFeePolicy);
 			if (deliveryFeePolicyList != null && !deliveryFeePolicyList.isEmpty()) {
 				goods.setGoodsRegMsg("배송비정책코드 오류");
 				goods.setGoodsStat("10");
@@ -3330,7 +3334,7 @@ public class TssGoodsService {
 		freeGoods.setUpdNo(TssSession.getInfo().getUserNo());
 		goodsDao.updateFreeGoods(freeGoods);
 	}
-	
+
 	/**
 	 * 안전인증번호 저장
 	 *
@@ -3350,7 +3354,7 @@ public class TssGoodsService {
 					goodsSafeNo.setRegNo(TssSession.getInfo().getUserNo());
 					goodsSafeNo.setUpdNo(TssSession.getInfo().getUserNo());
 					goodsDao.saveGoodsSafeNo(goodsSafeNo);
-				}else {
+				} else {
 					GagaMap result = safetyKoreaApi.getKoreaCertifyDetail(goods.getCertNum());
 					if (result != null || !StringUtil.isNullOrEmpty(result.get("certNum").toString())) {
 						GoodsSafeNo goodsSafeNo = new GoodsSafeNo();
@@ -3369,5 +3373,5 @@ public class TssGoodsService {
 			e.printStackTrace();
 		}
 	}
-	
+
 }