Bläddra i källkod

Merge branch 'develop' into style

card007 4 år sedan
förälder
incheckning
8d74542a2c

+ 2 - 0
src/main/java/com/style24/persistence/domain/Goods.java

@@ -107,6 +107,8 @@ public class Goods extends TscBaseDomain {
 	private String chImgYn = "N";
 	private String chNotiYn = "N";
 	private String chStockDataYn = "N";
+	private String chSafeYn = "N";
+	private String choOtYn = "N";
 	private String chGoodsStatYn = "N";
 	private String chCfrmYn = "N";		//입점용추가
 	private int stockQtySum;

+ 121 - 0
src/main/java/com/style24/persistence/mybatis/shop/TssGoods.xml

@@ -2246,6 +2246,127 @@
     )
   </insert>
 
+		<!-- 상품별 전시카테고리 삭제-->
+	<delete id="deleteGoodsCategory" parameterType="GoodsCategory">
+		/* TsaGoods.deleteGoodsCategory */
+		DELETE
+		FROM TB_CATE_GOODS
+		WHERE GOODS_CD = #{goodsCd}
+		<choose>
+		<when test="cateType == 'G031_20' and cateCd != null and cateCd != ''">
+		AND CATE_NO = #{cateCd}
+		</when>
+		<otherwise>
+		AND CATE_NO IN (
+			SELECT CATE_CD FROM
+			(
+				SELECT CATE1_NO AS CATE_CD
+				, CATE1_NO
+				, CATE2_NO
+				, CATE3_NO
+				, CATE4_NO
+				, CATE_TYPE
+				FROM TB_CATE_4SRCH
+				<if test="cateCd != null and cateCd1 != cateCd">
+				WHERE EXISTS (
+					SELECT 1 FROM (
+						SELECT COUNT(*) AS CATE_CNT
+						 FROM (
+							SELECT CATE_NO
+							FROM TB_CATE_GOODS
+							WHERE GOODS_CD = #{goodsCd}
+							AND CATE_NO IN (
+							    	SELECT LEAF_CATE_NO
+									FROM TB_CATE_4SRCH
+									WHERE CATE1_NO  = #{cateCd1}
+								)
+							) ALIAS_FOR_SUBQUERY
+						) ALIAS_FOR_SUBQUERY
+					<![CDATA[WHERE CATE_CNT < 2 ]]>
+				)
+				</if>
+				UNION ALL
+				SELECT CATE2_NO AS CATE_CD
+					, CATE1_NO
+					, CATE2_NO
+					, CATE3_NO
+					, CATE4_NO
+					, CATE_TYPE
+				FROM TB_CATE_4SRCH
+				<if test="cateCd != null and cateCd1 != cateCd and cateCd2 != cateCd">
+				WHERE EXISTS (
+					SELECT 1 FROM (
+						SELECT COUNT(*) AS CATE_CNT
+						FROM (
+							SELECT CATE_NO
+							FROM TB_CATE_GOODS
+							WHERE GOODS_CD = #{goodsCd}
+							AND CATE_NO IN (
+							    SELECT LEAF_CATE_NO
+								FROM TB_CATE_4SRCH
+								WHERE CATE2_NO = #{cateCd2}
+							)
+						) ALIAS_FOR_SUBQUERY
+					) ALIAS_FOR_SUBQUERY
+					<![CDATA[WHERE CATE_CNT < 2 ]]>
+				)
+				</if>
+				UNION ALL
+				SELECT CATE3_NO AS CATE_CD
+					, CATE1_NO
+					, CATE2_NO
+					, CATE3_NO
+					, CATE4_NO
+					, CATE_TYPE
+				FROM TB_CATE_4SRCH
+				<if test="cateCd != null and cateCd == cateCd4">
+				WHERE EXISTS (
+					SELECT 1 FROM (
+						SELECT COUNT(*) AS CATE_CNT
+						FROM (
+							SELECT CATE_NO
+							FROM TB_CATE_GOODS
+							WHERE GOODS_CD = #{goodsCd}
+							AND CATE_NO IN (
+							    	SELECT LEAF_CATE_NO
+									FROM TB_CATE_4SRCH
+									WHERE CATE3_NO = #{cateCd3}
+							)
+						) ALIAS_FOR_SUBQUERY
+					) ALIAS_FOR_SUBQUERY
+					<![CDATA[WHERE CATE_CNT < 2 ]]>
+				)
+				</if>
+				UNION ALL
+				SELECT CATE4_NO AS CATE_CD
+				, CATE1_NO
+				, CATE2_NO
+				, CATE3_NO
+				, CATE4_NO
+				, CATE_TYPE
+				FROM TB_CATE_4SRCH
+			) ALIAS_FOR_SUBQUERY
+			<if test="cateCd != null and cateCd1 == cateCd">
+				WHERE CATE1_NO = #{cateCd}
+			</if>
+			<if test="cateCd != null and cateCd2 == cateCd">
+				WHERE CATE2_NO = #{cateCd}
+			</if>
+			<if test="cateCd != null and cateCd3 == cateCd">
+				WHERE CATE3_NO = #{cateCd}
+			</if>
+			<if test="cateCd != null and cateCd4 == cateCd">
+				WHERE CATE4_NO = #{cateCd}
+			</if>
+			<if test="cateCd == null or cateCd == ''">
+				WHERE CATE_TYPE = 'G031_10'
+			</if>
+		)
+		</otherwise>
+		</choose>
+	</delete>
+
+
   <!-- 상품 품목별 매핑 카테고리 저장 (LEAF 상위카테고리까지)-->
   <insert id="createCategoryGoods_ORG" parameterType="Goods">
     /* TssGoods.createCategoryGoods */

+ 12 - 2
src/main/java/com/style24/scm/biz/dao/TssGoodsDao.java

@@ -4,10 +4,12 @@ import java.util.Collection;
 
 import org.springframework.dao.DataAccessException;
 
+import com.gagaframework.web.parameter.GagaMap;
 import com.style24.core.support.annotation.ShopDs;
 import com.style24.persistence.domain.Brand;
 import com.style24.persistence.domain.FreeGoods;
 import com.style24.persistence.domain.Goods;
+import com.style24.persistence.domain.GoodsCategory;
 import com.style24.persistence.domain.GoodsCompose;
 import com.style24.persistence.domain.GoodsDesc;
 import com.style24.persistence.domain.GoodsHst;
@@ -25,8 +27,6 @@ import com.style24.persistence.domain.NoticeGoods;
 import com.style24.persistence.domain.Option;
 import com.style24.persistence.domain.WmsGoods;
 
-import com.gagaframework.web.parameter.GagaMap;
-
 /**
  * 상품 Dao
  *
@@ -492,6 +492,16 @@ public interface TssGoodsDao {
 	 */
 	void createGoodsRegLog(GoodsMass goodsMass);
 
+	/**
+	 * 상품 품목별 매핑 카테고리 삭제
+	 *
+	 * @param goods
+	 * @author eskim
+	 * @since 2021. 09. 29
+	 */
+	void deleteGoodsCategory(GoodsCategory goodsCategory);
+
+
 	/**
 	 * 상품 품목별 매핑 카테고리 저장
 	 *

+ 224 - 21
src/main/java/com/style24/scm/biz/service/TssGoodsService.java

@@ -1486,6 +1486,18 @@ public class TssGoodsService {
 
 		goodsDao.createCategoryGoods(goods);
 
+		// 20210929 eskim(안전인증)
+		// 안전안증작업
+		if (!StringUtils.isEmpty(goods.getCertTargetGb())) {
+			GoodsSafeNo goodsSafeNo = new GoodsSafeNo();
+			goodsSafeNo.setGoodsCd(goods.getGoodsCd());
+			goodsSafeNo.setCertTargetGb(goods.getCertTargetGb());
+			goodsSafeNo.setCertFormGb(goods.getCertFormGb());
+			goodsSafeNo.setCertType(goods.getCertType());
+			goodsSafeNo.setCertNum(goods.getCertNum());
+			saveGoodsDetailCertNum(goodsSafeNo);
+		}
+
 		this.setGoodsRegResult(goods, goodsMass, procJob);
 
 		return goods.getGoodsStat();
@@ -1843,6 +1855,85 @@ public class TssGoodsService {
 				return goods;
 			}
 		}
+		// 20210929 eskim(안전인증)
+		// 안전인증 체크
+		if (!StringUtils.isBlank(goodsMass.getCertTargetGb())) {
+
+			//인증대상구분
+			commonCode.setCdGb("G083");
+			commonCode.setCd(goodsMass.getCertTargetGb());
+			Collection<CommonCode> certTargetGbList = rendererService.getCommonCodeList(commonCode);
+			if (certTargetGbList == null || certTargetGbList.isEmpty()) {
+				goods.setGoodsRegMsg("인증대상 오류");
+				goods.setGoodsStat("10");
+				return goods;
+			}
+			goods.setCertTargetGb(goodsMass.getCertTargetGb().trim());
+
+			if (!"G083_1".equals(goodsMass.getCertTargetGb())) {
+				if (!StringUtils.isBlank(goodsMass.getCertNum()) ||
+					!StringUtils.isBlank(goodsMass.getCertFormGb()) ||
+					!StringUtils.isBlank(goodsMass.getCertType())) {
+					goods.setGoodsRegMsg("인증정보 오류(인증대상만 입력)");
+					goods.setGoodsStat("10");
+					return goods;
+				}
+			}
+
+			//인증형태구분
+			if (StringUtils.isBlank(goodsMass.getCertFormGb())) {
+				goods.setGoodsRegMsg("인증형태 오류");
+				goods.setGoodsStat("10");
+				return goods;
+			}
+
+			commonCode.setCdGb("G084");
+			commonCode.setCd(goodsMass.getCertFormGb());
+			Collection<CommonCode> certFormGbList = rendererService.getCommonCodeList(commonCode);
+			if (certFormGbList == null || certFormGbList.isEmpty()) {
+				goods.setGoodsRegMsg("인증형태 오류");
+				goods.setGoodsStat("10");
+				return goods;
+			}
+			goods.setCertFormGb(goodsMass.getCertFormGb().trim());
+
+			//인증타입
+			if (StringUtils.isBlank(goodsMass.getCertType())) {
+				goods.setGoodsRegMsg("인증타입 오류");
+				goods.setGoodsStat("10");
+				return goods;
+			}
+
+			commonCode.setCdGb("G081");
+			commonCode.setCd(goodsMass.getCertType());
+			Collection<CommonCode> certTypeList = rendererService.getCommonCodeList(commonCode);
+			if (certTypeList == null || certTypeList.isEmpty()) {
+				goods.setGoodsRegMsg("인증타입 오류");
+				goods.setGoodsStat("10");
+				return goods;
+			}
+			goods.setCertType(goodsMass.getCertType().trim());
+
+			if ("G081_1".equals(goodsMass.getCertType()) || "G081_2".equals(goodsMass.getCertType())) {
+				if (StringUtils.isBlank(goodsMass.getCertNum())) {
+					goods.setGoodsRegMsg("인증번호 오류");
+					goods.setGoodsStat("10");
+					return goods;
+				}
+			}
+			if (!StringUtils.isBlank(goodsMass.getCertNum())) {
+				goods.setCertNum(goodsMass.getCertNum().trim()); //안전인증번호
+			}
+
+		} else {
+			if (!StringUtils.isBlank(goodsMass.getCertFormGb()) ||
+				!StringUtils.isBlank(goodsMass.getCertType()) ||
+				!StringUtils.isBlank(goodsMass.getCertNum())) {
+				goods.setGoodsRegMsg("인증대상 오류");
+				goods.setGoodsStat("10");
+				return goods;
+			}
+		}
 
 		goods.setGoodsType("G056_N"); //상품타입
 		goods.setFormalGb("G009_10"); // 정상이월 구분
@@ -2753,9 +2844,9 @@ public class TssGoodsService {
 			return goods.getGoodsStat();
 		}
 
-		// 옵션
+		// 옵션-입점업체만 수정 20210929 eskim
 		Collection<Option> stockList = new ArrayList<>();
-		if (!UPDATE_NO_PATTERN.equals(goodsMass.getOptStr().trim())) {
+		if (!UPDATE_NO_PATTERN.equals(goodsMass.getOptStr().trim()) && "G001_B000".equals(TssSession.getInfo().getRoleCd())) {
 
 			//옵션1[필수]^옵션2[선택]^추가금액^안전재고[필수]^판매재고[필수]  |
 			//검정^90^0^0^10|검정^95^0^0^8|검정^100^0^0^5|파랑^90^0^0^15|파랑^95^0^0^5|파랑^100^0^0^1|파랑^105^0^0^7
@@ -2854,6 +2945,7 @@ public class TssGoodsService {
 
 				stockList.add(goodsStock);
 			}
+			goods.setChoOtYn("Y");
 		}
 
 		if ("10".equals(goods.getGoodsStat())) { // 정보 오류
@@ -2880,20 +2972,6 @@ public class TssGoodsService {
 			goods.setChkDescKeep("Y");
 		}
 
-		if ("N".equals(goods.getChDataYn()) && "N".equals(goods.getChkDescKeep()) && "N".equals(goods.getChNotiYn())) {
-			if (!UPDATE_NO_PATTERN.equals(goodsMass.getCurrPrice().trim()) || !UPDATE_NO_PATTERN.equals(goodsMass.getSellFeeRate().trim())) {
-				goods.setGoodsRegMsg("판매가/수수료율 승인요청");
-				goods.setGoodsStat("10");
-				this.setGoodsRegResult(goods, goodsMass, procJob);
-				return goods.getGoodsStat();
-			}else {
-				goods.setGoodsRegMsg("변경정보 없음");
-				goods.setGoodsStat("10");
-				this.setGoodsRegResult(goods, goodsMass, procJob);
-				return goods.getGoodsStat();
-			}
-		
-		}
 
 		//상품 기본정보 변경여부 와 촬영업체가 아닌경우
 		if ("Y".equals(goods.getChDataYn()) && !"G001_E000".equals(TssSession.getInfo().getRoleCd())) {
@@ -2956,11 +3034,136 @@ public class TssGoodsService {
 			goodsCategory.setUpdNo(TssSession.getInfo().getUserNo());
 			goodsCategory.setGoodsCd(goods.getGoodsCd());
 			goodsCategory.setCateType("G031_10");	//상품분류카테고리
-			displayService.deleteGoodsCategory(goodsCategory);
+			goodsDao.deleteGoodsCategory(goodsCategory);
 			goodsDao.createCategoryGoods(goods);
 
 		}
 
+		// 20210929 eskim (안전인증)
+		// 안전인증 적용
+		if (!UPDATE_NO_PATTERN.equals(goodsMass.getCertTargetGb().trim()) || !UPDATE_NO_PATTERN.equals(goodsMass.getCertFormGb().trim()) ||
+			 !UPDATE_NO_PATTERN.equals(goodsMass.getCertType().trim()) || !UPDATE_NO_PATTERN.equals(goodsMass.getCertNum().trim())) {
+
+			//기존안전인증정보
+			GoodsSafeNo dataGoodsSafeNo = goodsDao.getGoodsDetailSafe(goods);
+			GoodsSafeNo goodsSafeNo = new GoodsSafeNo();
+			goodsSafeNo.setGoodsCd(goods.getGoodsCd());
+			if (dataGoodsSafeNo == null || StringUtils.isBlank(dataGoodsSafeNo.getGoodsCd())) {
+				goodsSafeNo.setCertTargetGb(!UPDATE_NO_PATTERN.equals(goodsMass.getCertTargetGb().trim())?goodsMass.getCertTargetGb().trim():"");
+				goodsSafeNo.setCertFormGb(!UPDATE_NO_PATTERN.equals(goodsMass.getCertFormGb().trim())?goodsMass.getCertFormGb().trim():"");
+				goodsSafeNo.setCertType(!UPDATE_NO_PATTERN.equals(goodsMass.getCertType().trim())?goodsMass.getCertType().trim():"");
+				goodsSafeNo.setCertNum(!UPDATE_NO_PATTERN.equals(goodsMass.getCertNum().trim())?goodsMass.getCertNum().trim():"");
+			}else {
+				goodsSafeNo.setCertTargetGb(!UPDATE_NO_PATTERN.equals(goodsMass.getCertTargetGb().trim())?goodsMass.getCertTargetGb().trim():dataGoodsSafeNo.getCertTargetGb());
+				goodsSafeNo.setCertFormGb(!UPDATE_NO_PATTERN.equals(goodsMass.getCertFormGb().trim())?goodsMass.getCertFormGb().trim():dataGoodsSafeNo.getCertFormGb());
+				goodsSafeNo.setCertType(!UPDATE_NO_PATTERN.equals(goodsMass.getCertType().trim())?goodsMass.getCertType().trim():dataGoodsSafeNo.getCertType());
+				goodsSafeNo.setCertNum(!UPDATE_NO_PATTERN.equals(goodsMass.getCertNum().trim())?goodsMass.getCertNum().trim():dataGoodsSafeNo.getCertNum());
+			}
+			// 안전인증 체크
+			if (!StringUtils.isBlank(goodsSafeNo.getCertTargetGb())) {
+				CommonCode commonCode = new CommonCode();
+				//인증대상구분
+
+				commonCode.setCdGb("G083");
+				commonCode.setCd(goodsSafeNo.getCertTargetGb());
+				Collection<CommonCode> certTargetGbList = rendererService.getCommonCodeList(commonCode);
+				if (certTargetGbList == null || certTargetGbList.isEmpty()) {
+					goods.setGoodsRegMsg("인증대상 오류");
+					goods.setGoodsStat("10");
+					this.setGoodsRegResult(goods, goodsMass, procJob);
+					return goods.getGoodsStat();
+
+				}
+
+				if ("G083_1".equals(goodsSafeNo.getCertTargetGb())) {
+					//인증형태구분
+					if (StringUtils.isBlank(goodsSafeNo.getCertFormGb())) {
+
+						goods.setGoodsRegMsg("인증형태 오류");
+						goods.setGoodsStat("10");
+						this.setGoodsRegResult(goods, goodsMass, procJob);
+						return goods.getGoodsStat();
+					}else {
+						commonCode.setCdGb("G084");
+						commonCode.setCd(goodsSafeNo.getCertFormGb());
+						Collection<CommonCode> certFormGbList = rendererService.getCommonCodeList(commonCode);
+						if (certFormGbList == null || certFormGbList.isEmpty()) {
+
+							goods.setGoodsRegMsg("인증형태 오류");
+							goods.setGoodsStat("10");
+							this.setGoodsRegResult(goods, goodsMass, procJob);
+							return goods.getGoodsStat();
+						}
+					}
+
+					//인증타입
+					if (UPDATE_NO_PATTERN.equals(goodsSafeNo.getCertType()) || StringUtils.isBlank(goodsSafeNo.getCertType())) {
+
+						goods.setGoodsRegMsg("인증타입 오류");
+						goods.setGoodsStat("10");
+						this.setGoodsRegResult(goods, goodsMass, procJob);
+						return goods.getGoodsStat();
+					}
+
+					commonCode.setCdGb("G081");
+					commonCode.setCd(goodsSafeNo.getCertType());
+					Collection<CommonCode> certTypeList = rendererService.getCommonCodeList(commonCode);
+					if (certTypeList == null || certTypeList.isEmpty()) {
+						goods.setGoodsRegMsg("인증타입 오류");
+						goods.setGoodsStat("10");
+						this.setGoodsRegResult(goods, goodsMass, procJob);
+						return goods.getGoodsStat();
+					}
+
+					if ("G081_1".equals(goodsSafeNo.getCertType()) || "G081_2".equals(goodsSafeNo.getCertType())) {
+						if (UPDATE_NO_PATTERN.equals(goodsSafeNo.getCertNum()) || StringUtils.isBlank(goodsSafeNo.getCertNum())) {
+
+							goods.setGoodsRegMsg("인증번호 오류");
+							goods.setGoodsStat("10");
+							this.setGoodsRegResult(goods, goodsMass, procJob);
+							return goods.getGoodsStat();
+						}
+					}
+				}else {
+					goodsSafeNo.setCertFormGb("");
+					goodsSafeNo.setCertType("");
+					goodsSafeNo.setCertNum("");
+				}
+
+				saveGoodsDetailCertNum(goodsSafeNo);
+
+			}else{
+				if ((!StringUtils.isBlank(goodsSafeNo.getCertNum())) ||
+					(!StringUtils.isBlank(goodsSafeNo.getCertFormGb())) ||
+					(!StringUtils.isBlank(goodsSafeNo.getCertType()))) {
+
+					goods.setGoodsRegMsg("인증대상 오류");
+					goods.setGoodsStat("10");
+					this.setGoodsRegResult(goods, goodsMass, procJob);
+					return goods.getGoodsStat();
+				}
+			}
+			goods.setChSafeYn("Y");
+		}
+
+		if ("N".equals(goods.getChDataYn()) && "N".equals(goods.getChkDescKeep()) &&
+				"N".equals(goods.getChNotiYn())  && "N".equals(goods.getChSafeYn()) &&
+				"N".equals(goods.getChoOtYn()) ) {
+			if (!UPDATE_NO_PATTERN.equals(goodsMass.getCurrPrice().trim()) || !UPDATE_NO_PATTERN.equals(goodsMass.getSellFeeRate().trim())) {
+				goods.setGoodsRegMsg("판매가/수수료율 승인요청");
+				goods.setGoodsStat("10");
+				this.setGoodsRegResult(goods, goodsMass, procJob);
+				return goods.getGoodsStat();
+			}else {
+				goods.setGoodsRegMsg("변경정보 없음");
+				goods.setGoodsStat("10");
+				this.setGoodsRegResult(goods, goodsMass, procJob);
+				return goods.getGoodsStat();
+			}
+
+		}
+
+
 		this.setGoodsRegResult(goods, goodsMass, procJob);
 
 		return goods.getGoodsStat();
@@ -3094,7 +3297,7 @@ public class TssGoodsService {
 			}
 			goods.setChDataYn("Y");
 		}
-		
+
 		// 상품상태
 		if (StringUtils.isBlank(goodsMass.getGoodsStatCd())) {
 			goods.setGoodsRegMsg("상품상태 오류");
@@ -3114,8 +3317,8 @@ public class TssGoodsService {
 			}
 			goods.setChDataYn("Y");
 		}
-		
-		// 최초승인완료일이 있을경우만 승인완료로 상태값 변경가능 
+
+		// 최초승인완료일이 있을경우만 승인완료로 상태값 변경가능
 		if("G008_90".equals(goodsMass.getGoodsStatCd())) {
 			if (StringUtils.isBlank(goodsOrigin.getFrstCfrmDt())) {
 				goods.setGoodsRegMsg("상품상태 오류- 최초승인일이 있는경우만 승인완료로 변경가능");
@@ -3123,7 +3326,7 @@ public class TssGoodsService {
 				return goods;
 			}
 		}
-		
+
 		//판매가
 		if (StringUtils.isBlank(goodsMass.getCurrPrice())) {
 			goods.setGoodsRegMsg("판매가 오류");

+ 7 - 2
src/main/java/com/style24/scm/biz/web/TssGoodsController.java

@@ -1102,12 +1102,13 @@ public class TssGoodsController extends TssBaseController {
 			if (newFile.getName().contains("_X1")) {
 //				if (width != height) {
 				if (width == 1000 && height == 1000) {
+					// 외부몰연동용 이미지로 설정
+					goodsImg.setExtmallImgYn("Y");
+				}else {
 					deleteErrorFileList(errorFileList);
 					deleteErrorFileList(errorFileDextList);
 					throw new IllegalStateException(comGoodsCd + " 상품코드의 외부몰용 상품이미지는 정사각형(1000x1000)이 아닙니다.");
 				}
-				// 외부몰연동용 이미지로 설정
-				goodsImg.setExtmallImgYn("Y");
 			}
 			// 오류가 발생했으므로
 //			deleteErrorFileList(errorFileList);
@@ -1231,10 +1232,12 @@ public class TssGoodsController extends TssBaseController {
 				throw new IllegalStateException("WMS 연동여부가 [N]입니다. 관리자에게 문의하세요.");
 			}
 
+			// 20210929 eskim(안전인증)
 			// DB 처리 시 사용되는 파라미터명(셀명) 설정
 			String[] goodsNames = {"goodsNum", "brandCd", "goodsNm", "itemkindCd", "styleYear", "seasonCd",
 				"sexGb", "formalGb", "ageGrpCd", "originCd", "makeYmd", "goodsTitles",
 				"goodsContent", "goodsCharacter",
+				"certTargetGb", "certFormGb", "certType", "certNum",
 				"niClsfCd", "niContent1", "niContent2", "niContent3", "niContent4", "niContent5",
 				"niContent6", "niContent7", "niContent8", "niContent9", "niContent10", "niContent11", "niContent12",
 				"niContent13", "niContent14", "niContent15", "niContent16", "niContent17", "niContent18",
@@ -1310,12 +1313,14 @@ public class TssGoodsController extends TssBaseController {
 		String targetPath = GagaFileUtil.getConcatenationPath(env.getProperty("upload.excel.target.path"), "excel");
 		Collection<GagaMap> ecxelGoodsList = new ArrayList<>();
 
+		// 20210929 eskim (안전인증)
 		// 상품수장
 		// DB 처리 시 사용되는 파라미터명(셀명) 설정 -
 		String[] goodsNames = {"goodsCd", "goodsNm", "goodsTnm", "goodsSnm1", "itemkindCd", "seasonCd",
 			"sexGb", "goodsStatCd", "currPrice", "sellFeeRate", "goodsGb", "formalGb", "minOrdQty", "maxOrdQty", "dayMaxOrdQty",
 			"giftPackYn", "newCustOrdYn", "pntPrate", "prePpntUsableYn", "pntMrate", "preMpntUsableYn",
 			"returnableYn", "changeableYn", "taxGb", "ageGrpCd", "adultYn", "delvFeeCd", "optStr", "goodsContent",
+			"certTargetGb", "certFormGb", "certType", "certNum",
 			"niClsfCd", "niContent1", "niContent2",
 			"niContent3", "niContent4", "niContent5", "niContent6", "niContent7", "niContent8", "niContent9",
 			"niContent10", "niContent11", "niContent12", "niContent13", "niContent14", "niContent15", "niContent16",