Просмотр исходного кода

상품목록 상태 일괄변경 개발중

eskim 5 лет назад
Родитель
Сommit
3a7d550fbd

+ 12 - 1
style24.admin/src/main/java/com/style24/admin/biz/dao/TsaBusinessDao.java

@@ -4,6 +4,7 @@ import java.util.Collection;
 
 import com.style24.core.support.annotation.ShopDs;
 import com.style24.persistence.domain.Aflink;
+import com.style24.persistence.domain.Brand;
 import com.style24.persistence.domain.DeliveryLoc;
 import com.style24.persistence.domain.SellStore;
 import com.style24.persistence.domain.ShipCompany;
@@ -11,7 +12,7 @@ import com.style24.persistence.domain.SupplyCompany;
 
 /**
  * 영업관리 Dao
- * 
+ *
  * @author gagamel
  * @since 2020. 10. 14
  */
@@ -126,4 +127,14 @@ public interface TsaBusinessDao {
 	 */
 	void deleteShipCompany(ShipCompany shipComp);
 
+	/**
+	 * 브랜드 목록
+	 *
+	 * @param brand - 브랜드 정보
+	 * @return 브랜드 목록
+	 * @author eskim
+	 * @since 2020. 10. 22
+	 */
+	Collection<Brand> getBrandList(Brand brand);
+
 }

+ 61 - 0
style24.admin/src/main/java/com/style24/admin/biz/dao/TsaGoodsDao.java

@@ -5,6 +5,8 @@ import java.util.Collection;
 import com.style24.core.support.annotation.ShopDs;
 import com.style24.persistence.domain.Color;
 import com.style24.persistence.domain.Goods;
+import com.style24.persistence.domain.GoodsDesc;
+import com.style24.persistence.domain.GoodsNotiInfo;
 import com.style24.persistence.domain.GoodsSearch;
 import com.style24.persistence.domain.Itemkind;
 import com.style24.persistence.domain.NotiInfo;
@@ -119,4 +121,63 @@ public interface TsaGoodsDao {
 	 */
 	Collection<GagaMap> getGoodsInfoExcelList(GoodsSearch goodsSearch);
 
+	/**
+	 * 상품 이미지 필수 항목 입력 여부 조회
+	 *
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @since 2020. 10. 22
+	 */
+	Collection<Goods> getGoodsImgsYn(Goods goods);
+
+	/**
+	 * 상품 상세
+	 *
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @since 2020. 10. 22
+	 */
+	Goods getGoods(Goods goods);
+
+	/**
+	 * 상품 상세 정보 조회
+	 *
+	 * @param goodsVideo
+	 * @return
+	 * @author eskim
+	 * @since 2020. 10. 22
+	 */
+	Collection<GoodsDesc> getGoodsDescList(GoodsDesc goodsDesc);
+
+	/**
+	 * 상품 고시 조회
+	 *
+	 * @param goodsNotiInfo
+	 * @return
+	 * @author eskim
+	 * @since 2020. 10. 12
+	 */
+	Collection<GoodsNotiInfo> getGoodsNotiInfoList(GoodsNotiInfo goodsNotiInfo);
+
+	/**
+	 * 상품 기본 정보 이력 생성
+	 *
+	 * @param goods
+	 * @author eskim
+	 * @since 2020. 10. 22
+	 */
+	void createGoodsHst(Goods goods);
+
+	/**
+	 * 상품 수정 항목 일괄변경
+	 *
+	 * @param goods
+	 * @author eskim
+	 * @since 2020. 10. 22
+	 */
+	void updateGoodsState(Goods goods);
+
+
 }

+ 12 - 0
style24.admin/src/main/java/com/style24/admin/biz/service/TsaBusinessService.java

@@ -11,6 +11,7 @@ import com.style24.admin.biz.dao.TsaBusinessDao;
 import com.style24.admin.support.security.session.TsaSession;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.persistence.domain.Aflink;
+import com.style24.persistence.domain.Brand;
 import com.style24.persistence.domain.DeliveryLoc;
 import com.style24.persistence.domain.SellStore;
 import com.style24.persistence.domain.ShipCompany;
@@ -192,4 +193,15 @@ public class TsaBusinessService {
 		}
 	}
 
+	/**
+	 * 브랜드 목록 조회
+	 *
+	 * @param brand - 브랜드 정보
+	 * @author eskim
+	 * @since 2020. 10. 22
+	 */
+	public Collection<Brand> getBrandList(Brand brand) {
+		return businessDao.getBrandList(brand);
+	}
+
 }

+ 200 - 0
style24.admin/src/main/java/com/style24/admin/biz/service/TsaGoodsService.java

@@ -12,8 +12,11 @@ import com.style24.admin.biz.dao.TsaGoodsDao;
 import com.style24.admin.support.env.TsaConstants;
 import com.style24.admin.support.security.session.TsaSession;
 import com.style24.core.support.message.TscMessageByLocale;
+import com.style24.persistence.domain.Brand;
 import com.style24.persistence.domain.Color;
 import com.style24.persistence.domain.Goods;
+import com.style24.persistence.domain.GoodsDesc;
+import com.style24.persistence.domain.GoodsNotiInfo;
 import com.style24.persistence.domain.GoodsSearch;
 import com.style24.persistence.domain.Itemkind;
 import com.style24.persistence.domain.NotiInfo;
@@ -44,6 +47,9 @@ public class TsaGoodsService {
 	@Autowired
 	private TsaGoodsDao goodsDao;
 
+	@Autowired
+	private TsaBusinessService businessService;
+
 	/**
 	 * 품목 목록
 	 * @param itemkind
@@ -276,4 +282,198 @@ public class TsaGoodsService {
 		}
 	}
 
+	/**
+	 * 상품 이미지 등록여부 조회
+	 *
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @since 2020. 10. 21
+	 */
+	public Collection<Goods> getGoodsImgsYn(Goods goods) {
+		return goodsDao.getGoodsImgsYn(goods);
+	}
+
+	/**
+	 * 상품 상세
+	 *
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @since 2020. 10. 22
+	 */
+	public Goods getGoods(Goods goods) {
+		// 상품기본정보
+		Goods resultGoods = goodsDao.getGoods(goods);
+
+		// 상품 상세
+		return this.getGoodsDesc(resultGoods);
+	}
+
+	/**
+	 * 상품 상세 조회
+	 *
+	 * @param resultGoods
+	 * @return
+	 * @author eskim
+	 * @since 2020. 10. 22
+	 */
+	private Goods getGoodsDesc(Goods resultGoods) {
+
+		GoodsDesc goods = new GoodsDesc();
+		goods.setGoodsCd(resultGoods.getGoodsCd());
+
+		//		goods.setDescGb("10");
+		//		String goodsDesc = this.getGoodsDescList(goods);
+		//		resultGoods.setGoodsDesc(goodsDesc);
+
+		// 상품 상세 pc 상단
+		goods.setDescGb("20");
+		String goodsPcTopDesc = this.getGoodsDescList(goods);
+		resultGoods.setGoodsPcTopDesc(goodsPcTopDesc);
+
+		// 상품 상세  pc 하단
+		goods.setDescGb("30");
+		String goodsPcDownDesc = this.getGoodsDescList(goods);
+		resultGoods.setGoodsPcDownDesc(goodsPcDownDesc);
+
+		// 상품 상세 mobile 상단
+		goods.setDescGb("40");
+		String goodsMobileTopDesc = this.getGoodsDescList(goods);
+		resultGoods.setGoodsMobileTopDesc(goodsMobileTopDesc);
+
+		// 상품 상세 mpbile 하단
+		goods.setDescGb("50");
+		String goodsMobileDownDesc = this.getGoodsDescList(goods);
+		resultGoods.setGoodsMobileDownDesc(goodsMobileDownDesc);
+
+		return resultGoods;
+	}
+
+	/**
+	 * 상품 상세구분별 컨텐츠 조회
+	 *
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @since 2020. 10. 22
+	 */
+	private String getGoodsDescList(GoodsDesc goodsDesc) {
+		Collection<GoodsDesc> goodsDescList = goodsDao.getGoodsDescList(goodsDesc);
+		StringBuilder goodsDescSb = new StringBuilder();
+		if (goodsDescList != null && !goodsDescList.isEmpty()) {
+			for (GoodsDesc tmpGoodsDesc : goodsDescList) {
+				goodsDescSb.append(tmpGoodsDesc.getGoodsDesc());
+			}
+		}
+		return goodsDescSb.toString();
+	}
+
+	/**
+	 * 상품 정보고시 조회
+	 *
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @since 2020. 10. 22
+	 */
+	public Collection<GoodsNotiInfo> getGoodsNotiInfoList(GoodsNotiInfo goodsNotiInfo) {
+		return goodsDao.getGoodsNotiInfoList(goodsNotiInfo);
+	}
+
+	/**
+	 * 상품 수정 항목 일괄변경
+	 *
+	 * @param goods
+	 * @author eskim
+	 * @since 2020. 01. 17
+	 */
+	@Transactional("shopTxnManager")
+	public void updateGoodsState(Goods goods) {
+		if (goods == null || (goods.getArrGoodsCd() == null && goods.getArrGoodsCd().length <= 0)) {
+			throw new IllegalStateException(message.getMessage("FAIL_1001"));
+		}
+
+		goods.setRegNo(TsaSession.getInfo().getUserNo());
+		goods.setUpdNo(TsaSession.getInfo().getUserNo());
+
+		if (goods.getArrGoodsCd().length > 0) {
+			for (String goodsCd : goods.getArrGoodsCd()) {
+
+				goods.setGoodsCd(goodsCd);
+				// 이력생성
+				goodsDao.createGoodsHst(goods);
+
+				if ("formalGb".equals(goods.getProcJob())) {
+					// 상품브랜드 조회
+					Goods originGoods = goodsDao.getGoods(goods);
+					// 브랜드 확인
+					goods.setPntPrate(originGoods.getPntPrate()); // 포인트적립율(PC)
+					goods.setPntMrate(originGoods.getPntMrate()); // 포인트적립율(MOBILE)
+					Brand brand = new Brand();
+					brand.setBrandCd(originGoods.getBrandCd());
+					Collection<Brand> brandList = businessService.getBrandList(brand);
+					if (brandList != null && !brandList.isEmpty()) {
+						float pntPrate = 0;
+						float pntMrate = 0;
+						for (Brand tmpBrand : brandList) {
+							if ("10".equals(goods.getFormalGb())) {
+								pntPrate = tmpBrand.getPntPrate10();
+								pntMrate = tmpBrand.getPntMrate10();
+							} else {
+								pntPrate = tmpBrand.getPntPrate20();
+								pntMrate = tmpBrand.getPntMrate20();
+							}
+						}
+						goods.setPntPrate(pntPrate); // 포인트적립율(PC)
+						goods.setPntMrate(pntMrate); // 포인트적립율(MOBILE)
+					}
+				} else if ("goodsStat".equals(goods.getProcJob())) {
+					// 상품브랜드 조회
+					Goods originGoods = goodsDao.getGoods(goods);
+
+					// 승인일
+					if (!goods.getGoodsStat().equals(originGoods.getGoodsStat()) && "90".equals(goods.getGoodsStat())) {
+						goods.setChGoodsStatYn("Y");
+					}
+				}
+				// 상품정보 변경
+				goodsDao.updateGoodsState(goods);
+			}
+
+		} else {
+
+			// 이력생성
+			goodsDao.createGoodsHst(goods);
+			if ("formalGb".equals(goods.getProcJob())) {
+				// 상품브랜드 조회
+				Goods originGoods = goodsDao.getGoods(goods);
+				// 브랜드 확인
+				goods.setPntPrate(originGoods.getPntPrate()); // 포인트적립율(PC)
+				goods.setPntMrate(originGoods.getPntMrate()); // 포인트적립율(MOBILE)
+				Brand brand = new Brand();
+				brand.setBrandCd(originGoods.getBrandCd());
+				Collection<Brand> brandList = businessService.getBrandList(brand);
+				if (brandList != null && !brandList.isEmpty()) {
+					float pntPrate = 0;
+					float pntMrate = 0;
+					for (Brand tmpBrand : brandList) {
+						if ("10".equals(goods.getFormalGb())) {
+							pntPrate = tmpBrand.getPntPrate10();
+							pntMrate = tmpBrand.getPntMrate10();
+						} else {
+							pntPrate = tmpBrand.getPntPrate20();
+							pntMrate = tmpBrand.getPntMrate20();
+						}
+					}
+					goods.setPntPrate(pntPrate); // 포인트적립율(PC)
+					goods.setPntMrate(pntMrate); // 포인트적립율(MOBILE)
+				}
+			}
+			// 상품정보 변경
+			goodsDao.updateGoodsState(goods);
+		}
+
+	}
+
 }

+ 13 - 12
style24.admin/src/main/java/com/style24/persistence/domain/Goods.java

@@ -69,21 +69,22 @@ public class Goods extends TsaBaseDomain {
 	private String brandEnm;		//브랜드영문명
 	private String brandGrpNm;		//브랜드그룹명
 
-//	private String goodsDesc;
-//	private String goodsPcTopDesc;
-//	private String goodsPcDownDesc;
-//	private String goodsMobileTopDesc;
-//	private String goodsMobileDownDesc;
-//	private String chkDescKeep = "N";
+	private String goodsDesc;
+	private String goodsPcTopDesc;
+	private String goodsPcDownDesc;
+	private String goodsMobileTopDesc;
+	private String goodsMobileDownDesc;
+	private String chkDescKeep = "N";
 //
-//	private String chDataYn = "N";
-//	private String chImgYn = "N";
-//	private String chNotiYn = "N";
-//	private String chStockDataYn = "N";
+	private String chDataYn = "N";
+	private String chImgYn = "N";
+	private String chNotiYn = "N";
+	private String chStockDataYn = "N";
+	private String chGoodsStatYn = "N";
 	private String stockQtySum;
 	private String goodsImageYn;
 	private String itemkindNm;
-//	private String niClsfCd;
+	private String niClsfCd;
 //	private Integer currPriceOrg;
 //
 	private String imgType;
@@ -93,7 +94,7 @@ public class Goods extends TsaBaseDomain {
 //	private String niClsfNm;
 //
 //	private String goodsRegMsg;
-//	private String procJob;
+	private String procJob;
 //	private String excelFileNm;
 //	private String searchGb;
 //

+ 20 - 0
style24.admin/src/main/java/com/style24/persistence/domain/GoodsDesc.java

@@ -0,0 +1,20 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TsaBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 상품 상세 설명 Domain
+ * @author eskim
+ * @since 2020. 10. 22
+ */
+@SuppressWarnings("serial")
+@Data
+public class GoodsDesc extends TsaBaseDomain {
+
+	private String goodsCd;
+	private String descGb;
+	private int seq;
+	private String goodsDesc;
+}

+ 47 - 0
style24.admin/src/main/java/com/style24/persistence/mybatis/shop/TsaBusiness.xml

@@ -461,4 +461,51 @@
 		WHERE  SHIP_COMP_CD=  #{shipCompCd}
 	</update>
 
+	<!-- 브랜드 목록 -->
+	<select id="getBrandList" parameterType="Brand" resultType="Brand">
+		/* TsaBusiness.getBrandList */
+		SELECT A.BRAND_CD                         /*브랜드코드*/
+		     , A.BRAND_ENM                        /*브랜드영문명*/
+		     , A.BRAND_KNM                        /*브랜드한글명*/
+		     , A.BRAND_GRP_NM                     /*브랜드그룹명*/
+		     , A.SUPPLY_COMP_CD                   /*업체코드*/
+		     , B.SUPPLY_COMP_NM                   /*업체명*/
+		     , A.DELV_LOC_CD                      /*출고처코드*/
+		     , C.DELV_LOC_NM                      /*출고처명*/
+		     , A.ERP_BRAND_CD                     /*ERP브랜드 코드*/
+		     , A.DELV_FEE                         /*기본배송비*/
+		     , A.MIN_ORD_AMT                      /*무료배송비기준*/
+		     , A.SELL_FEE_RATE                    /*판매수수료율*/
+		     , A.USE_YN                           /*사용여부*/
+		     , A.PNT_PRATE10                        /*포인트적립율(PC)*/
+		     , A.PNT_MRATE10                        /*포인트적립율(모바일)*/
+		     , A.PNT_PRATE20                        /*포인트적립율(PC)*/
+		     , A.PNT_MRATE20                        /*포인트적립율(모바일)*/
+		     , A.DISP_ORD
+		FROM TB_BRAND A
+		INNER JOIN TB_SUPPLY_COMPANY B ON A.SUPPLY_COMP_CD = B.SUPPLY_COMP_CD
+		LEFT OUTER JOIN TB_DELIVERY_LOC C ON A.DELV_LOC_CD = C.DELV_LOC_CD
+		WHERE  1 = 1
+		<if test='supplyCompCd != null and supplyCompCd != ""'>
+		AND    A.SUPPLY_COMP_CD = #{supplyCompCd}
+		</if>
+		<if test='erpBrandCd != null and erpBrandCd != ""'>
+		AND    A.ERP_BRAND_CD =  #{erpBrandCd}
+		</if>
+		<if test='brandCd != null and brandCd != ""'>
+		AND    A.BRAND_CD = #{brandCd}
+		</if>
+		<if test='brandEnm != null and brandEnm != ""'>
+		AND    (
+		        A.BRAND_ENM LIKE CONCAT('%',#{brandEnm},'%')
+		        OR
+		        A.BRAND_KNM LIKE CONCAT('%',#{brandEnm},'%')
+		       )
+		</if>
+		<if test='useYn != null and useYn != ""'>
+		AND    A.USE_YN = #{useYn}
+		</if>
+		ORDER BY B.SELF_YN DESC, A.SUPPLY_COMP_CD, A.DISP_ORD
+	</select>
+	
 </mapper>

+ 290 - 0
style24.admin/src/main/java/com/style24/persistence/mybatis/shop/TsaGoods.xml

@@ -674,4 +674,294 @@
 		</if>
 	</select>
 	
+	<!-- 상품 정보 -->
+	<select id="getGoods" parameterType="Goods" resultType="Goods">
+		/* TsaGoods.getGoods */
+		SELECT G.GOODS_CD
+		     , G.GOODS_NM
+		     , G.GOODS_TNM
+		     , G.GOODS_SNM
+		     , G.GOODS_SNM1
+		     , G.BRAND_CD
+		     , B.BRAND_GRP_NM
+		     , G.ITEMKIND_CD
+		     , G.STYLE_YEAR
+		     , G.SEASON_CD
+		     , G.SEX_GB
+		     , G.GOODS_NUM
+		     , G.COLOR_CD
+		     , G.LIST_PRICE
+		     , G.CURR_PRICE
+		     , G.CURR_BPRICE
+		     , DATE_FORMAT(G.PRICE_UPD_DT, '%Y%m%d%H%i%S') AS PRICE_UPD_DT
+		     , G.DC_RATE
+		     , G.GOODS_STAT
+		     , G.SELF_GOODS_YN
+		     , (SELECT COLOR_GRP_FILE 
+		        FROM TB_COLOR 
+		        WHERE SUPPLY_COMP_CD = G.SUPPLY_COMP_CD
+		        AND BRAND_CD = G.BRAND_CD
+		        AND COLOR_CD = G.COLOR_CD) AS COLOR_GRP_FILE
+		     , G.SUPPLY_COMP_CD
+		     , G.SUPPLY_GOODS_CD
+		     , G.DELV_FEE
+		     , G.MIN_ORD_AMT
+		     , G.PNT_PRATE
+		     , G.PNT_MRATE
+		     , G.SELL_FEE_RATE
+		     , G.FORMAL_GB
+		     , G.RETURNABLE_YN
+		     , G.PRE_PPNT_USABLE_YN
+		     , G.PRE_MPNT_USABLE_YN
+		     , G.MIN_ORD_QTY
+		     , G.MAX_ORD_QTY
+		     , G.ERP_STOCK_LINK_YN
+		     , G.ERP_PRICE_LINK_YN
+		     , G.MAKE_NM
+		     , G.MAKE_YMD
+		     , G.BUYING_TYPE
+		     , G.SELF_MALL_YN
+		     , G.GOODS_TYPE
+		     , (SELECT CD_NM FROM TB_COMMON_CODE WHERE CD_GB='G066' AND CD = G.GOODS_TYPE) AS GOODS_TYPE_NM
+		     , DATE_FORMAT(G.FRST_CFRM_DT, '%Y%m%d%H%i%S') AS FRST_CFRM_DT
+		     , (SELECT I.NI_CLSF_CD FROM TB_ITEMKIND I WHERE I.ITEMKIND_CD = G.ITEMKIND_CD) AS NI_CLSF_CD
+		     , GI.IMG_TYPE
+		     , GI.IMG_PATH1
+		     , GI.IMG_PATH6
+		     , CASE WHEN IMG_PATH1 IS NULL THEN
+		           'N'
+		       ELSE
+		           'Y'
+		       END AS GOODS_IMAGE_YN
+		     ,(SELECT B.CD_NM 
+		       FROM TB_ITEMKIND A
+		          , TB_COMMON_CODE B 
+		       WHERE A.ITEMKIND_CD = G.ITEMKIND_CD 
+		       AND A.NI_CLSF_CD = B.CD 
+		       AND B.CD_GB='G004') AS  NI_CLSF_NM
+		FROM TB_GOODS G
+		INNER JOIN TB_BRAND B ON G.BRAND_CD = B.BRAND_CD
+		OUTER JOIN TB_GOODS_IMG GI ON G.GOODS_CD = GI.GOODS_CD
+		WHERE 1 = 1 
+		<choose>
+		<when test="goodsCd != null and goodsCd != ''">
+		AND G.GOODS_CD = #{goodsCd}
+		</when>
+		<otherwise>
+		AND G.SUPPLY_COMP_CD = #{supplyCompCd}
+		AND G.SUPPLY_GOODS_CD = #{supplyGoodsCd}
+		</otherwise>
+		</choose>
+	</select>
+	
+	<!-- 상품 상세 정보 조회 -->
+	<select id="getGoodsDescList" parameterType="GoodsDesc" resultType="GoodsDesc">
+		/* TsaGoods.getGoodsDescList */
+		SELECT GOODS_CD
+		     , DESC_GB
+		     , SEQ
+		     , GOODS_DESC
+		FROM TB_GOODS_DESC
+		WHERE GOODS_CD = #{goodsCd}
+		AND DESC_GB = #{descGb}
+		ORDER BY SEQ
+	</select>
+	
+	<!-- 상품 고시정보 조회 -->
+	<select id="getGoodsNotiInfoList" parameterType="GoodsNotiInfo" resultType="GoodsNotiInfo">
+		/* TsaGoods.getGoodsNotiInfoList */
+		SELECT C.GOODS_CD
+		     , C.NI_CLSF_CD
+		     , FN_GET_CODE_NM('G005', C.NI_ITEM_CD) AS NI_ITEM_NM
+		     , C.NI_ITEM_CD
+		     , C.NI_CONTENT
+		     , C.DISP_ORD
+		     , A.DISP_YN
+		     , A.REQ_YN
+		FROM TB_GOODS_NOTI_INFO C
+		INNER JOIN TB_NOTI_INFO A ON C.NI_CLSF_CD = A.NI_CLSF_CD
+		                          AND C.NI_ITEM_CD = A.NI_ITEM_CD
+		                          AND A.SUPPLY_COMP_CD = DECODE(#{supplyCompCd},'S0001','S0001','S0002','S0002','E')
+		WHERE C.GOODS_CD = #{goodsCd}
+		AND C.NI_CLSF_CD = #{niClsfCd}
+		ORDER BY C.DISP_ORD
+	</select>
+	
+	<!-- 상품 기본정보 이력 생성 -->
+	<insert id="createGoodsHst" parameterType="Goods">
+		/* TsaGoods.createGoodsHst */
+		INSERT INTO TB_GOODS_HST 
+		(       GOODS_CD
+		      , BRAND_CD
+		      , ITEMKIND_CD
+		      , GOODS_NM
+		      , GOODS_TNM
+		      , GOODS_SNM
+		      , GOODS_SNM1
+		      , COLOR_CD
+		      , STYLE_YEAR
+		      , SEASON_CD
+		      , SEX_GB
+		      , GOODS_NUM
+		      , GOODS_TYPE
+		      , LIST_PRICE
+		      , CURR_PRICE
+		      , CURR_BPRICE
+		      , PRICE_UPD_DT
+		      , DC_RATE
+		      , GOODS_STAT
+		      , DISP_YN
+		      , GOODS_GB
+		      , DISTRIBUTION_GB
+		      , SELF_GOODS_YN
+		      , SUPPLY_COMP_CD
+		      , SUPPLY_GOODS_CD
+		      , AGE_GRP_CD
+		      , DELV_FEE
+		      , MIN_ORD_AMT
+		      , PNT_PRATE
+		      , PNT_MRATE
+		      , SELL_FEE_RATE
+		      , FORMAL_GB
+		      , CHANGEABLE_YN
+		      , RETURNABLE_YN
+		      , CHANGE_FEE_FREE_YN
+		      , RETURN_FEE_FREE_YN
+		      , PRE_PPNT_USABLE_YN
+		      , PRE_MPNT_USABLE_YN
+		      , MIN_ORD_QTY
+		      , MAX_ORD_QTY
+		      , DAY_MAX_ORD_QTY
+		      , FRST_CFRM_DT
+		      , MAKE_NM
+		      , MAKE_YMD
+		      , TAX_GB
+		      , ERP_PRICE_LINK_YN
+		      , ERP_STOCK_LINK_YN
+		      , REG_NO
+		      , REG_DT
+		      , UPD_NO
+		      , UPD_DT
+		)
+		SELECT GOODS_CD            
+		     , BRAND_CD            
+		     , ITEMKIND_CD         
+		     , GOODS_NM            
+		     , GOODS_TNM           
+		     , GOODS_SNM           
+		     , GOODS_SNM1          
+		     , COLOR_CD            
+		     , STYLE_YEAR          
+		     , SEASON_CD           
+		     , SEX_GB              
+		     , GOODS_NUM           
+		     , GOODS_TYPE          
+		     , LIST_PRICE          
+		     , CURR_PRICE          
+		     , CURR_BPRICE         
+		     , PRICE_UPD_DT        
+		     , DC_RATE             
+		     , GOODS_STAT          
+		     , DISP_YN             
+		     , GOODS_GB            
+		     , DISTRIBUTION_GB     
+		     , SELF_GOODS_YN       
+		     , SUPPLY_COMP_CD      
+		     , SUPPLY_GOODS_CD     
+		     , AGE_GRP_CD          
+		     , DELV_FEE            
+		     , MIN_ORD_AMT         
+		     , PNT_PRATE           
+		     , PNT_MRATE           
+		     , SELL_FEE_RATE       
+		     , FORMAL_GB           
+		     , CHANGEABLE_YN       
+		     , RETURNABLE_YN       
+		     , CHANGE_FEE_FREE_YN  
+		     , RETURN_FEE_FREE_YN  
+		     , PRE_PPNT_USABLE_YN  
+		     , PRE_MPNT_USABLE_YN  
+		     , MIN_ORD_QTY         
+		     , MAX_ORD_QTY         
+		     , DAY_MAX_ORD_QTY     
+		     , FRST_CFRM_DT        
+		     , MAKE_NM             
+		     , MAKE_YMD            
+		     , TAX_GB              
+		     , ERP_PRICE_LINK_YN   
+		     , ERP_STOCK_LINK_YN   
+		     , #{regNo}              
+		     , NOW()              
+		     , UPD_NO              
+		     , UPD_DT              
+		FROM TB_GOODS
+		WHERE GOODS_CD = #{goodsCd}
+	</insert>
+	
+	<!-- 상품  수정 항목 일괄변경 -->
+	<update id="updateGoodsState" parameterType="Goods">
+		/* TsaGoods.updateGoodsState */
+		UPDATE TB_GOODS SET
+		      UPD_NO = #{updNo}
+		    , UPD_DT = NOW()
+		<if test="goodsStat != null and goodsStat != ''" >
+		    , GOODS_STAT = #{goodsStat}
+		    , FRST_CFRM_DT = IF(#{chGoodsStatYn} = 'Y', COALESCE(FRST_CFRM_DT, NOW()) , FRST_CFRM_DT)
+		</if>
+		<if test="erpStockLinkYn != null and erpStockLinkYn != ''" >
+		    , ERP_STOCK_LINK_YN = #{erpStockLinkYn}
+		</if>
+		<if test="erpPriceLinkYn != null and erpPriceLinkYn != ''" >
+		    , ERP_PRICE_LINK_YN = #{erpPriceLinkYn}
+		</if>
+		<if test="erpInfoLinkYn != null and erpInfoLinkYn != ''" >
+		    , ERP_INFO_LINK_YN = #{erpInfoLinkYn}
+		</if>
+		<if test="erpTagPriceLinkYn != null and erpTagPriceLinkYn != ''" >
+		    , ERP_TAG_PRICE_LINK_YN = #{erpTagPriceLinkYn}
+		</if>
+		<if test="formalGb != null and formalGb != ''" >
+		    , FORMAL_GB = #{formalGb}
+		    , PNT_PRATE = IFNULL(#{pntPrate}, PNT_PRATE)
+		    , PNT_MRATE = IFNULL(#{pntMrate}, PNT_MRATE)
+		</if>
+		<if test="(formalGb == null or formalGb == '') and pntPrate != null" >
+		    , PNT_PRATE = #{pntPrate}
+		</if>
+		<if test="(formalGb == null or formalGb == '') and pntMrate != null" >
+		    , PNT_MRATE = #{pntMrate}
+		</if>
+		<if test="returnableYn != null and returnableYn != ''" >
+		    , RETURNABLE_YN = #{returnableYn}
+		</if>
+		<if test="changeableYn != null and changeableYn != ''" >
+		    , CHANGEABLE_YN = #{changeableYn}
+		</if>
+		<if test="prePpntUsableYn != null and prePpntUsableYn != ''" >
+		    , PRE_PPNT_USABLE_YN = #{prePpntUsableYn}
+		</if>
+		<if test="preMpntUsableYn != null and preMpntUsableYn != ''" >
+		    , PRE_MPNT_USABLE_YN = #{preMpntUsableYn}
+		</if>
+		<if test="minOrdAmt != null and minOrdAmt != ''" >
+		    , MIN_ORD_AMT = #{minOrdAmt}
+		</if>
+		<if test='blankFlag != null and blankFlag == "Y"'>
+		    , GOODS_TNM = ''
+		</if>
+		<if test="goodsTnm != null and goodsTnm != ''" >
+		    , GOODS_TNM = #{goodsTnm}
+		</if>
+		<if test="minOrdQty != null and minOrdQty > 0" >
+		    , MIN_ORD_QTY = #{minOrdQty}
+		</if>
+		<if test="maxOrdQty != null and maxOrdQty > 0" >
+		    , MAX_ORD_QTY = #{maxOrdQty}
+		</if>
+		<if test="dayMaxOrdQty != null and dayMaxOrdQty > 0" >
+		    , DAY_MAX_ORD_QTY = #{dayMaxOrdQty}
+		</if>
+		WHERE GOODS_CD = #{goodsCd}
+	</update>
+	
 </mapper>