Forráskód Böngészése

자사 상품 등록시 고시분류 항목내용(종류) 추가 적용

eskim 5 éve
szülő
commit
bbab80a6dd

+ 1 - 0
src/main/java/com/style24/persistence/domain/Itemkind.java

@@ -19,6 +19,7 @@ public class Itemkind extends TscBaseDomain {
 	//private String itemkindEnm;		// 품목영문명
 	private String niClsfCd;		// 고시분류코드
 	private String useYn;			// 사용여부
+	private String itemkindLeafNm;		// leaf 품목명
 
 //	private String index;
 

+ 36 - 18
src/main/java/com/style24/persistence/mybatis/shop/TssGoods.xml

@@ -7,9 +7,9 @@
 		/* TssGoods.getItemkindList */
 		SELECT ITEMKIND_CD
 		     , ITEMKIND_NM
-		     /* , ITEMKIND_ENM*/
 		     , NI_CLSF_CD
 		     , USE_YN
+		     , EPLACE(SUBSTRING_INDEX(ITEMKIND_NM, '>', -2) ,'>','') AS ITEMKIND_LEAF_NM
 		FROM TB_ITEMKIND
 		WHERE 1 = 1
 		<if test="itemkindCd != null and itemkindCd != ''">
@@ -2131,27 +2131,30 @@
 	<!-- wms 상품 색상 , 사이즈별 재고 정보 조회 -->
 	<select id="getGoodsWmsSizeList" parameterType="Goods"  resultType = "Option">
 		/* TssGoods.getGoodsWmsSizeList */
-		SELECT GOODS_CD
-		     , OPT_CD
-		     , OPT_CD1
-		     , OPT_CD2
-		     , SKU_MODEL_NO
-		     , PRODUCT_NO
-		     , PRODUCT_CODE
-		     , SUM(CURR_STOCK_QTY) AS CURR_STOCK_QTY
+		SELECT Z.GOODS_CD
+		     , Z.OPT_CD
+		     , F.COLOR_CD AS OPT_CD1
+		     , Z.OPT_CD2
+		     , Z.SKU_MODEL_NO
+		     , Z.PRODUCT_NO
+		     , Z.PRODUCT_CODE
+		     , SUM(Z.CURR_STOCK_QTY) AS CURR_STOCK_QTY
 		     , NVL((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
 		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(B.PRODUCT_NO) AS PRODUCT_NO
-			, MAX(B.PRODUCT_CODE) AS PRODUCT_CODE
-			, ROUND(GREATEST(A.SELLINGSTOCKAMOUNT, 0) * (NVL(D.STOCK_APPL_RATE, 0)/100)) AS CURR_STOCK_QTY
-			, D.DELV_LOC_CD
-			, D.STOCK_APPL_RATE
+		    , 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(B.PRODUCT_NO) AS PRODUCT_NO
+		    , MAX(B.PRODUCT_CODE) AS PRODUCT_CODE
+		    , ROUND(GREATEST(A.SELLINGSTOCKAMOUNT, 0) * (NVL(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
 		FROM TB_IF_PRODUCTSKU A 
 		INNER JOIN TB_GOODS B ON A.PRODUCTCODE = B.PRODUCT_CODE 
 		                      AND B.SELF_GOODS_YN = 'Y'
@@ -2165,6 +2168,11 @@
 		WHERE 1 = 1
 		GROUP BY B.GOODS_CD, A.SKUCODE, D.DELV_LOC_CD, D.STOCK_APPL_RATE
 		) Z
+		INNER JOIN TB_SUPPLY_COMPANY G ON Z.SUPPLY_COMP_CD = G.SUPPLY_COMP_CD
+		INNER JOIN TB_WMS_COLOR_MAPPING F ON (CASE WHEN Z.BRAND_CD = 'S006' THEN Z.BRAND_CD
+		                                           ELSE G.SUPPLY_VENDOR_CD 
+		                                      END) = F.SUPPLY_VENDOR_CD
+		                                  AND F.USE_YN ='Y'
 		GROUP BY GOODS_CD, OPT_CD
 	</select>
 	
@@ -2280,4 +2288,14 @@
 		WHERE GOODS_CD = #{goodsCd}
 	</update>
 	
+	<!-- 상품 상태만 변경 -->
+	<update id="updateGoodsStatOnly" parameterType="Goods">
+		/* TssGoods.updateGoodsStatOnly */
+		UPDATE TB_GOODS 
+		SET GOODS_STAT= #{goodsStat}
+		  , UPD_NO = #{updNo}
+		  , UPD_DT = NOW() 
+		WHERE GOODS_CD = #{goodsCd}
+	</update>
+	
 </mapper>

+ 11 - 6
src/main/java/com/style24/scm/biz/dao/TssGoodsDao.java

@@ -40,7 +40,6 @@ public interface TssGoodsDao {
 	 */
 	Collection<Itemkind> getItemkindList(Itemkind itemkind);
 
-
 	/**
 	 * 상품 목록 건수
 	 *
@@ -160,7 +159,6 @@ public interface TssGoodsDao {
 	 */
 	void createGoodsHst(Goods goods);
 
-
 	/**
 	 * 상품 수정 항목 일괄변경
 	 *
@@ -170,7 +168,6 @@ public interface TssGoodsDao {
 	 */
 	void updateGoodsState(Goods goods);
 
-
 	/**
 	 * 상품 자동 검색어 조회
 	 *
@@ -454,7 +451,6 @@ public interface TssGoodsDao {
 	 */
 	Collection<GoodsNotiInfo> getItemkindNotiInfoList(Goods goods);
 
-
 	/**
 	 * 상품 등록 로그 생성
 	 *
@@ -496,7 +492,7 @@ public interface TssGoodsDao {
 	/**
 	 * 상품 색상, 사이즈 정보 조회
 	 *
-	 * @param Goods
+	 * @param goods
 	 * @return
 	 * @author eskim
 	 * @since 2021. 01. 14
@@ -506,12 +502,21 @@ public interface TssGoodsDao {
 	/**
 	 * 상품 대표색상 설정
 	 *
-	 * @param Goods
+	 * @param goodsMass
 	 * @return
 	 * @author eskim
 	 * @since 2021. 01. 14
 	 */
 	void updateGoodsMainColorCd(GoodsMass goodsMass);
 
+	/**
+	 * 상품 상태만 변경
+	 *
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @since 2021. 01. 18
+	 */
+	void updateGoodsStatOnly(Goods goods);
 
 }

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

@@ -74,8 +74,6 @@ public class TssGoodsService {
 	@Autowired
 	private TssRendererService rendererService;
 
-
-
 	@Autowired
 	private ObjectMapper mapper;
 
@@ -143,8 +141,8 @@ public class TssGoodsService {
 			Collection<GagaMap> dataList = goodsDao.getGoodsInfoExcelList(goodsSearch); // map형식으로 조회
 			if (dataList != null && !dataList.isEmpty()) {
 				for (GagaMap gagaMap : dataList) {
-					if (!StringUtils.isEmpty(gagaMap.get("SYS_IMG_NM").toString()) ) {
-						gagaMap.set("SYS_IMG_NM", targetPath + '/' +  gagaMap.get("SYS_IMG_NM").toString());
+					if (!StringUtils.isEmpty(gagaMap.get("SYS_IMG_NM").toString())) {
+						gagaMap.set("SYS_IMG_NM", targetPath + '/' + gagaMap.get("SYS_IMG_NM").toString());
 					}
 				}
 			}
@@ -374,7 +372,7 @@ public class TssGoodsService {
 			for (GoodsDesc tmpGoodsDesc : goodsDescList) {
 				goodsDescSb.append(tmpGoodsDesc.getGoodsDesc());
 			}
-		}else {
+		} else {
 			goodsDescSb.append("");
 		}
 		return goodsDescSb.toString();
@@ -560,7 +558,7 @@ public class TssGoodsService {
 			}
 			goodsPriceRes.setApplyStdt(GagaDateUtil.getTodayDateTime());	//yyyymmddhhmiss
 			int toYear = Integer.parseInt(GagaDateUtil.getToday("yyyy")) + 4;
-			goodsPriceRes.setApplyEddt(toYear +"1231235959");	//yyyymmddhhmiss
+			goodsPriceRes.setApplyEddt(toYear + "1231235959");	//yyyymmddhhmiss
 			goodsPriceRes.setCfrmYn("N");
 			goodsPriceRes.setApplyYn("N");
 			goodsPriceRes.setRegNo(goods.getRegNo());
@@ -655,11 +653,11 @@ public class TssGoodsService {
 			goodsOrderGrade.setGoodsCd(goods.getGoodsCd());
 			goodsOrderGrade.setRegNo(TssSession.getInfo().getUserNo());
 			goodsDao.deleteGoodsCustGrade(goodsOrderGrade);
-			for(String custGrade : goods.getGoodsOrderGrade()) {
+			for (String custGrade : goods.getGoodsOrderGrade()) {
 				goodsOrderGrade.setCustGrade(custGrade);
 				goodsDao.createGoodsCustGrade(goodsOrderGrade);
 			}
-		}else {
+		} else {
 			Goods goodsOrderGrade = new Goods();
 			goodsOrderGrade.setGoodsCd(goods.getGoodsCd());
 			goodsOrderGrade.setRegNo(TssSession.getInfo().getUserNo());
@@ -1056,7 +1054,7 @@ public class TssGoodsService {
 	 * @since 2020. 12. 23
 	 */
 	@Transactional("shopTxnManager")
-	public void saveGoodsImageList(Collection<GoodsImg> goodsImgList){
+	public void saveGoodsImageList(Collection<GoodsImg> goodsImgList) {
 		int index = 0;
 		for (GoodsImg goodsImg : goodsImgList) {
 			// 상품이미지 전체 삭제
@@ -1099,7 +1097,7 @@ public class TssGoodsService {
 	 * @since 2021. 01. 12
 	 */
 	@Transactional("shopTxnManager")
-	public String createExceluploadSelfGoods(GagaMap gagaMap,  String procJob) {
+	public String createExceluploadSelfGoods(GagaMap gagaMap, String procJob) {
 
 		GoodsMass goodsMass = mapper.convertValue(gagaMap, GoodsMass.class);
 
@@ -1139,10 +1137,11 @@ public class TssGoodsService {
 		if (goodsWmsSizeList == null || goodsWmsSizeList.isEmpty()) {
 			goods.setGoodsRegMsg("WMS 상품 사이즈 정보 없음");
 			goods.setGoodsStat("G008_20");
-		}else{
-			this.createSelfGoodsSize(goods, goodsWmsSizeList); // 자사 상품사이즈 정보 
+		} else {
+			this.createSelfGoodsSize(goods, goodsWmsSizeList); // 자사 상품사이즈 정보 
 		}
 
+		// 상품 색상 , 사이즈 옵션 정보 조회
 		GoodsMass goodsColorSize = goodsDao.getGoodsColorSize(goods);
 		if (goodsColorSize != null && !StringUtils.isEmpty(goodsColorSize.getMainColorCd())) {
 			goodsColorSize.setUpdNo(TssSession.getInfo().getUserNo());
@@ -1152,7 +1151,7 @@ public class TssGoodsService {
 		// 자사 상품 등록시 고시정보 처리
 		for (GoodsNotiInfo goodsNotiInfo : goodsNotiList) {
 			if ("G005_003".equals(goodsNotiInfo.getNiItemCd())) {	// 색상
-				if (!StringUtils.isEmpty(goodsColorSize.getOpt1Str() )) {
+				if (!StringUtils.isEmpty(goodsColorSize.getOpt1Str())) {
 					goodsNotiInfo.setNiContent(goodsColorSize.getOpt1Str());
 				}
 			} else if ("G005_004".equals(goodsNotiInfo.getNiItemCd())) {	//치수
@@ -1169,17 +1168,26 @@ public class TssGoodsService {
 				}
 			} else if ("G005_097".equals(goodsNotiInfo.getNiItemCd())) {	//수입여부
 				if (!StringUtils.isEmpty(goods.getOriginNm()) &&
-						(goods.getOriginNm().indexOf("대한민국") >= 0 || goods.getOriginNm().indexOf("한국") >= 0 || goods.getOriginNm().toUpperCase().indexOf("KOREA") >= 0)) {
+					(goods.getOriginNm().indexOf("대한민국") >= 0 || goods.getOriginNm().indexOf("한국") >= 0 || goods.getOriginNm().toUpperCase().indexOf("KOREA") >= 0)) {
 					goodsNotiInfo.setNiContent("N");
 				} else {
 					goodsNotiInfo.setNiContent("Y");
 				}
+			} else if ("G005_099".equals(goodsNotiInfo.getNiItemCd())) {	//종류
+				if (!StringUtils.isEmpty(goods.getItemkindNm())) {
+					goodsNotiInfo.setNiContent(goods.getItemkindNm());
+				}
 			}
 		}
 
 		//고시항목 필수값 확인
 		goods = this.getGoodsNotiCheck(goods, goodsNotiList, gagaMap, procJob);
 
+		//고시 필수 항목 미입력으로 상품 상태 변경
+		if ("G008_20".equals(goods.getGoodsStat())) {
+			goodsDao.updateGoodsStatOnly(goods);
+		}
+
 		this.createGoodsNoti(gagaMap, goodsNotiList); // 상품고시정보 저장
 
 		// 사용자 검색어를 검색어에 적용
@@ -1306,7 +1314,6 @@ public class TssGoodsService {
 
 		goodsMass.setSupplyCompCd(supplyCompCd); // 업체 코드
 
-
 		// 상품명
 		if (StringUtils.isEmpty(goodsMass.getGoodsNm())) {
 			goods.setGoodsRegMsg("상품명 오류");
@@ -1332,9 +1339,10 @@ public class TssGoodsService {
 			goods.setGoodsStat("10");
 			return goods;
 		}
+		goods.setItemkindNm(getItemkindList.iterator().next().getItemkindLeafNm());	//LEAF품목명
 
 		// 스타일 년도
-		if (StringUtils.isEmpty(goodsMass.getStyleYear()) ||  goodsMass.getStyleYear().length() != 4 || !goodsMass.getStyleYear().trim().matches(NUMBER_PATTERN)) {
+		if (StringUtils.isEmpty(goodsMass.getStyleYear()) || goodsMass.getStyleYear().length() != 4 || !goodsMass.getStyleYear().trim().matches(NUMBER_PATTERN)) {
 			goods.setGoodsRegMsg("스타일 년도 오류");
 			goods.setGoodsStat("10");
 			return goods;
@@ -1430,7 +1438,7 @@ public class TssGoodsService {
 			int costPrice = Integer.parseInt(GagaStringUtil.replace(goodsMass.getCostPrice(), ",", "").trim());
 			// 원가
 			goods.setCostPrice(costPrice);
-		}else {
+		} else {
 			goods.setCostPrice(0);
 		}
 
@@ -1517,7 +1525,7 @@ public class TssGoodsService {
 		goodsMass.setRegSuccYn("Y");
 		goodsMass.setRegFailRsn(goods.getGoodsRegMsg());
 		goodsMass.setRegNo(TssSession.getInfo().getUserNo());
-		 //model은 string 테이블은 number 형이라 ,,,
+		//model은 string 테이블은 number 형이라 ,,,
 		if (StringUtils.isEmpty(goodsMass.getListPrice())) {
 			goodsMass.setListPrice("0");
 		}