Przeglądaj źródła

엑셀대량수정 개발중

eskim 5 lat temu
rodzic
commit
46fdb0b6e2

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

@@ -79,6 +79,7 @@ public class Goods extends TscBaseDomain {
 	private int brandNo;			// 브랜드번호
 	private String supplyVendorCd;	//벤더코드
 
+	private String goodsDesc;		//상품상세(as-is)
 	private String goodsPcTopDesc;
 	private String goodsPcDownDesc;
 	private String goodsMobileTopDesc;

+ 100 - 0
src/main/java/com/style24/persistence/domain/GoodsCategory.java

@@ -0,0 +1,100 @@
+package com.style24.persistence.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.style24.persistence.TscBaseDomain;
+
+import com.style24.persistence.TscPageRequest;
+import lombok.Data;
+
+/**
+ * 상품별 카테고리 Domain
+ * @author eskim
+ * @since 2020. 10. 30
+ */
+@SuppressWarnings("serial")
+@Data
+public class GoodsCategory extends TscBaseDomain {
+
+	private int startRow;
+	private int endRow;
+	private String fullCateNm;
+	private String imgPath1;
+	private String imgPath4;
+	private String imgPath6;
+	private String imgType;
+	private String goodsCd;
+	private String goodsNm;
+	private int currStockQty;
+	private int baseStockQty;
+	private int dcRate;
+	private String dcRateSt;
+	private String dcRateEd;
+	private int listPrice;
+	private int currPrice;
+	private String currPriceSt;
+	private String currPriceEd;
+	private int pntPrate;
+	private String prePpntUsableYn;
+	private int pntMrate;
+	private String preMpntUsableYn;
+	private String soldoutYn;
+	private String erpStockLinkYn;
+	private String formalGb;
+	private String selfGoodsYn;
+	private String mdId;
+	private String supplyGoodsCd;
+	private String supplyCompCd;
+	private String brandEnm;
+	private String brandGrpNm;
+	private String brandCd;
+	private String itemkindCd;
+	private String colorEnm;
+	private String goodsStat;
+	private String siteCd;
+	private String styleYear;
+	private String seasonCd;
+	private String changeableYn;
+	private String returnableYn;
+	private String returnFeeFreeYn;
+	private String changeFeeFreeYn;
+	private String stDate;
+	private String edDate;
+	private String dispYn;
+	private String searchGb;
+	private String cateCd;
+	private String cateGb;
+	private String cateType;
+	private String cateCd1;
+	private String cateCd2;
+	private String cateCd3;
+	private String cateCd4;
+	private String cateCd5;
+
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] cateCdArr;
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] cateCd1Arr;
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] cateCd2Arr;
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] cateCd3Arr;
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] cateCd4Arr;
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] cateCd5Arr;
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] cateGbArr;
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] cateTypeArr;
+
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] goodsCdList;
+
+	private String goodsCds;
+
+	// Pagination
+	private TscPageRequest pageable;
+	private int pageNo = 1;
+	private int pageSize = 50;
+	private int pageUnit = 10;
+}

+ 13 - 5
src/main/java/com/style24/persistence/domain/GoodsMass.java

@@ -40,14 +40,22 @@ public class GoodsMass extends TscBaseDomain {
 	private String ageGrpCd;		//상품연령코드(공통코드G023)
 	private String adultYn;			//성인용품여부 'Y', 'N'
 
-	private String optStr;			//옵션(입점용)
+	private String pntPrate;		//포인트적립율(PC)
+	private String pntMrate;		//포인트적립율(모바일)
+	private String prePpntUsableYn;	//선포인트사용가능여부(PC)
+	private String preMpntUsableYn;	//선포인트사용가능여부(모바일)
+	private String sellFeeRate;		//판매수수료율
+	private String changeableYn;	//교환가능여부
+	private String returnableYn;	//반품가능여부
+	private String minOrdQty;		//최소주문수량
+	private String maxOrdQty;		//최대주문수량
+	private String dayMaxOrdQty;	//ID당1일최대구매수량
+	private String giftPackYn;		//선물포장여부
+	private String newCustOrdYn;	//신규고객 구매가능여부(Y:신규고객만 구매가능)
 
+	private String optStr;			//옵션(입점용)
 	private String opt1Str;			//옵션1
 	private String opt2Str;			//옵션2
-
-//	private String baseStockStr;	//안전재고(입점용)
-//	private String currStockStr;	//재고(입점용)
-
 	private String goodsContent;	//상품상세 html(입점용)
 
 	private String niClsfCd;

+ 23 - 0
src/main/java/com/style24/persistence/domain/ItemkindCategory.java

@@ -0,0 +1,23 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 품목카테고리 Domain
+ *
+ * @author gagamel
+ * @since 2021. 1. 5
+ */
+@SuppressWarnings("serial")
+@Data
+public class ItemkindCategory extends TscBaseDomain {
+
+	private String itemkindCd;	// 품목코드
+	private String cateGb;		// 카테고리구분
+	private Integer cateNo;		// 카테고리번호
+	private String fullCateNo;	// FULL카테고리번호
+	private String fullCateNm;	// FULL카테고리명
+
+}

+ 110 - 5
src/main/java/com/style24/persistence/mybatis/shop/TssGoods.xml

@@ -1932,9 +1932,23 @@
 		  , COST_PRICE
 		  , SUPPLY_GOODS_CD
 		  , FORMAL_GB
+		  , SELL_FEE_RATE
 		  , GOODS_GB
 		  , TAX_GB
 		  , ADULT_YN
+		  , MIN_ORD_QTY
+		  , MAX_ORD_QTY
+		  , DAY_MAX_ORD_QTY
+		  , PNT_PRATE
+		  , PNT_MRATE
+		  , PRE_PPNT_USABLE_YN
+		  , PRE_MPNT_USABLE_YN
+		  , CHANGEABLE_YN
+		  , RETURNABLE_YN
+		  , GIFT_PACK_YN
+		  , NEW_CUST_ORD_YN
+		  , OPT_STR
+		  , GOODS_CONTENT
 		  , NI_CLSF_CD
 		  , NI_CONTENT1
 		  , NI_CONTENT2
@@ -1989,9 +2003,23 @@
 		  , #{costPrice}
 		  , #{supplyGoodsCd}
 		  , #{formalGb}
+		  , #{sellFeeRate}
 		  , #{goodsGb}
 		  , #{taxGb}
 		  , #{adultYn}
+		  , #{minOrdQty}
+		  , #{maxOrdQty}
+		  , #{dayMaxOrdQty}
+		  , #{pntPrate}
+		  , #{pntMrate}
+		  , #{prePpntUsableYn}
+		  , #{preMpntUsableYn}
+		  , #{changeableYn}
+		  , #{returnableYn}
+		  , #{giftPackYn}
+		  , #{newCustOrdYn}
+		  , #{optStr}
+		  , #{goodsContent}
 		  , #{niClsfCd}
 		  , #{niContent1}
 		  , #{niContent2}
@@ -2205,10 +2233,20 @@
 		     , A.GOODS_GB
 		     , A.TAX_GB
 		     , A.ADULT_YN
-		     -- , A.OPT_STR
-		     -- , A.BASE_STOCK_STR
-		     -- , A.CURR_STOCK_STR
-		     -- , A.GOODS_DESC_INFO
+		     , A.SELL_FEE_RATE
+		     , A.MIN_ORD_QTY
+		     , A.MAX_ORD_QTY
+		     , A.DAY_MAX_ORD_QTY
+		     , A.PNT_PRATE
+		     , A.PNT_MRATE
+		     , A.PRE_PPNT_USABLE_YN
+		     , A.PRE_MPNT_USABLE_YN
+		     , A.CHANGEABLE_YN
+		     , A.RETURNABLE_YN
+		     , A.GIFT_PACK_YN
+		     , A.NEW_CUST_ORD_YN
+		     , A.OPT_STR
+		     , A.GOODS_CONTENT
 		     , A.NI_CLSF_CD
 		     , A.NI_CONTENT1
 		     , A.NI_CONTENT2
@@ -2247,7 +2285,7 @@
 		-- LEFT OUTER JOIN TB_GOODS B ON A.GOODS_CD = B.GOODS_CD
 		WHERE 1 = 1 
 		<if test='condition != null and condition != "" '>
-		AND (UPPER(A.GOODS_CD) LIKE CONCAT('%',UPPER(#{condition}),'%')
+		AND (UPPER(A.GOODS_NUM) LIKE CONCAT('%',UPPER(#{condition}),'%')
 		     OR 
 		     UPPER(A.SUPPLY_GOODS_CD) LIKE CONCAT('%',UPPER(#{condition}),'%')
 		    )
@@ -2301,4 +2339,71 @@
 		WHERE GOODS_CD = #{goodsCd}
 	</update>
 	
+	<!-- 상품 기본 정보 수정  - 대량엑셀 -->
+	<update id="updateGoodsMass" parameterType="Goods">
+		/* TssGoods.updateGoodsMass */
+		UPDATE TB_GOODS
+		SET UPD_ID = #{updId}
+		  , UPD_DT = SYSDATE
+		<if test='goodsNm != null and goodsNm != "X"'>
+		  , GOODS_NM = #{goodsNm} 
+		</if>
+		<if test='goodsTnm != null and goodsTnm != "X"'>
+		  , GOODS_TNM = #{goodsTnm}
+		</if>
+		<if test='goodsSnm1 != null and goodsSnm1 != "X"'>
+		  , GOODS_SNM1 = #{goodsSnm1}
+		</if>
+		<if test='itemkindCd != null and itemkindCd != "X"'>
+		  , ITEMKIND_CD = #{itemkindCd}
+		</if>
+		<if test='styleYear != null and styleYear != "X"'>
+		  , STYLE_YEAR = #{styleYear}
+		</if>
+		<if test='seasonCd != null and seasonCd != "X"'>
+		  , SEASON_CD = #{seasonCd}
+		</if>
+		<if test='sexGb != null and sexGb != "X"'>
+		  , SEX_GB = #{sexGb}
+		</if>
+		<if test="currPrice != null and currPrice > 0">
+		  , CURR_PRICE = #{currPrice}
+		  , CURR_BPRICE = #{currBprice}
+		  , PRICE_UPD_DT = SYSDATE
+		  , DC_RATE = #{dcRate}
+		</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='buyingType != null and buyingType != "X"'>
+		  , BUYING_TYPE = #{buyingType}
+		</if>
+		<if test='formalGb != null and formalGb != "X"'>
+		  , FORMAL_GB = #{formalGb}
+		  , PNT_PRATE = NVL(#{pntPrate}, PNT_PRATE)
+		  , PNT_MRATE = NVL(#{pntMrate}, PNT_MRATE)
+		</if>
+		<if test='makeNm != null and makeNm != "X"'>
+		  , MAKE_NM = #{makeNm}
+		</if>
+		<if test='makeYmd != null and makeYmd != "X"'>
+		  , MAKE_YMD = #{makeYmd}
+		</if>
+		<if test='pntPrate != null and pntPrate >= 0'>
+		  , PNT_PRATE = #{pntPrate}
+		</if>
+		<if test='prePpntUsableYn != null and prePpntUsableYn != "X"'>
+		  , PRE_PPNT_USABLE_YN = DECODE(#{prePpntUsableYn}, 'Y', 'Y', 'N', 'N', PRE_PPNT_USABLE_YN)
+		</if>
+		<if test='pntMrate != null and pntMrate >= 0'>
+		  , PNT_MRATE = #{pntMrate}
+		</if>
+		<if test='makeYmd != preMpntUsableYn and preMpntUsableYn != "X"'>
+		  , PRE_MPNT_USABLE_YN = DECODE(#{preMpntUsableYn}, 'Y', 'Y', 'N', 'N', PRE_MPNT_USABLE_YN)
+		</if>
+		WHERE GOODS_CD = #{goodsCd}
+	</update>
 </mapper>

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

@@ -519,7 +519,6 @@ public interface TssGoodsDao {
 	 */
 	void updateGoodsStatOnly(Goods goods);
 
-
 	/**
 	 * 상품코드 생성
 	 *
@@ -529,4 +528,12 @@ public interface TssGoodsDao {
 	 */
 	void createGoodsSequence(Goods goods);
 
+	/**
+	 * 상품 기본 정보 수정 - 대량엑셀
+	 *
+	 * @param goods
+	 * @author eskim
+	 * @since 2021. 1. 20
+	 */
+	void updateGoodsMass(Goods goods);
 }

Plik diff jest za duży
+ 235 - 201
src/main/java/com/style24/scm/biz/service/TssGoodsService.java


+ 53 - 8
src/main/java/com/style24/scm/biz/web/TssGoodsController.java

@@ -6,12 +6,12 @@ import java.util.Collection;
 
 import javax.servlet.http.HttpServletRequest;
 
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 import org.springframework.core.io.InputStreamResource;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Controller;
-import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -153,7 +153,7 @@ public class TssGoodsController extends TssBaseController {
 		}
 
 		// multi row 검색관련 처리
-		if (!StringUtils.isEmpty(goodsSearch.getCondition())) {
+		if (!StringUtils.isBlank(goodsSearch.getCondition())) {
 			goodsSearch.setConditionList(goodsSearch.getCondition().replaceAll("\r", "").split("\n"));
 
 			if ("searchExtendGoodsCd".equals(goodsSearch.getSearch())) {
@@ -194,7 +194,7 @@ public class TssGoodsController extends TssBaseController {
 		goodsSearch.setRegNo(TssSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
 
 		// multi row 검색관련 처리
-		if (!StringUtils.isEmpty(goodsSearch.getCondition())) {
+		if (!StringUtils.isBlank(goodsSearch.getCondition())) {
 			goodsSearch.setConditionList(goodsSearch.getCondition().replaceAll("\r", "").split("\n"));
 
 			if ("searchExtendGoodsCd".equals(goodsSearch.getSearch())) {
@@ -277,7 +277,7 @@ public class TssGoodsController extends TssBaseController {
 					} else {
 						for (GoodsNotiInfo tmpGoodsNotiInfo : goodsNotiInfoList) {
 							if ("Y".equals(tmpGoodsNotiInfo.getReqYn()) || "Y".equals(tmpGoodsNotiInfo.getDispYn())) {
-								if (StringUtils.isEmpty(tmpGoodsNotiInfo.getNiContent())) {
+								if (StringUtils.isBlank(tmpGoodsNotiInfo.getNiContent())) {
 									returnGoods += tmpGoods.getGoodsCd() + ",";
 									break;
 								}
@@ -761,7 +761,7 @@ public class TssGoodsController extends TssBaseController {
 		// 정보고시 목록
 		mav.addObject("niClsfCdList", rendererService.getAvailCommonCodeList("G004"));
 		// 사용자 업체
-		String supplyCompCd = StringUtils.hasLength(TssSession.getInfo().getSupplyCompCd()) ? TssSession.getInfo().getSupplyCompCd() : "NONE";
+		String supplyCompCd = !StringUtils.isBlank(TssSession.getInfo().getSupplyCompCd()) ? TssSession.getInfo().getSupplyCompCd() : "NONE";
 
 		mav.addObject("supplyCompCd", supplyCompCd);
 		mav.setViewName("goods/GoodsMassRegisterForm");
@@ -786,7 +786,7 @@ public class TssGoodsController extends TssBaseController {
 	/**
 	 * 상품대량등록 엑셀 저장
 	 *
-	 * @param goods
+	 * @param goodsMass
 	 * @return
 	 * @author eskim
 	 * @since 2021. 01. 12
@@ -857,6 +857,51 @@ public class TssGoodsController extends TssBaseController {
 		return super.ok("");
 	}
 
+	/**
+	 * 상품대량수정 엑셀 저장
+	 *
+	 * @param goodsMass
+	 * @return
+	 * @throws Exception
+	 * @author eskim
+	 * @since 2021. 1. 20
+	 */
+	@PostMapping("/mass/excelupload/update")
+	@ResponseBody
+	public GagaResponse updateMassExceluploadGoods(@RequestBody GoodsMass goodsMass) throws Exception {
+
+		String targetPath = GagaFileUtil.getConcatenationPath(env.getProperty("upload.excel.target.path"), "excel");
+		Collection<GagaMap> ecxelGoodsList = new ArrayList<>();
+
+		// 상품수장
+		// DB 처리 시 사용되는 파라미터명(셀명) 설정 -
+		String[] goodsNames = {"goodsCd", "goodsNm", "goodsTnm", "goodsSnm1", "itemkindCd", "seasonCd",
+			"sexGb", "currPrice", "sellFeeRate", "goodsGb", "formalGb", "minOrdQty", "maxOrdQty", "dayMaxOrdQty",
+			"giftPackYn", "newCustOrdYn", "returnableYn", "changeableYn",
+			"taxGb", "ageGrpCd", "adultYn", "goodsContent",
+			"niClsfCd", "niContent1", "niContent2",
+			"niContent3", "niContent4", "niContent5", "niContent6", "niContent7", "niContent8", "niContent9",
+			"niContent10", "niContent11", "niContent12", "niContent13", "niContent14", "niContent15", "niContent16",
+			"niContent17", "niContent18", "niContent19", "niContent20", "niContent21", "niContent22", "niContent23",
+			"niContent24", "niContent25", "niContent26", "niContent27", "niContent28"};
+
+		ecxelGoodsList = GagaExcelUtil.getList(GagaFileUtil.getConcatenationPath(targetPath, goodsMass.getExcelFileNm()), 0, goodsNames, 0);
+
+		// 입점담당자, 촬영업체
+		if (!"G001_B000".equals(TssSession.getInfo().getRoleCd()) && !"G001_E000".equals(TssSession.getInfo().getRoleCd())) {
+			throw new IllegalStateException("권한이 없습니다.");
+		}
+
+		for (GagaMap gagaMap : ecxelGoodsList) {
+			goodsService.updateMassExceluploadGoods(gagaMap,  goodsMass.getProcJob());
+		}
+
+		// 파일 삭제
+		GagaFileUtil.deleteFile(GagaFileUtil.getConcatenationPath(targetPath, goodsMass.getExcelFileNm()));
+
+		return super.ok("");
+	}
+
 	/**
 	 * 입점 가격 관리 화면
 	 *
@@ -949,7 +994,7 @@ public class TssGoodsController extends TssBaseController {
 		}
 
 		// multi row 검색관련 처리
-		if (!StringUtils.isEmpty(goodsSearch.getCondition())) {
+		if (!StringUtils.isBlank(goodsSearch.getCondition())) {
 			goodsSearch.setConditionList(goodsSearch.getCondition().replaceAll("\r", "").split("\n"));
 		}
 
@@ -1072,7 +1117,7 @@ public class TssGoodsController extends TssBaseController {
 		}
 
 		// multi row 검색관련 처리
-		if (!StringUtils.isEmpty(goodsSearch.getCondition())) {
+		if (!StringUtils.isBlank(goodsSearch.getCondition())) {
 			goodsSearch.setConditionList(goodsSearch.getCondition().replaceAll("\r", "").split("\n"));
 
 			if ("searchExtendGoodsCd".equals(goodsSearch.getSearch())) {

+ 1 - 1
src/main/webapp/WEB-INF/views/common/fragments/header.html

@@ -21,7 +21,7 @@
 	<meta charset="utf-8"/>
 	<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
 	<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
-	<title>:: STYLE24 Admin ::</title>
+	<title>:: STYLE24 SCM ::</title>
 	<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet"/>
 	<link rel="shortcut icon" type="image/x-icon" href="/image/favicon.ico"/>
 

+ 10 - 2
src/main/webapp/WEB-INF/views/goods/GoodsDetailForm.html

@@ -270,7 +270,7 @@
 											<label class="rdoBtn"><input type="radio" name="changeableYn" id="changeableYnN" value="N"/>N</label>
 											<input type="hidden" id="changeableYnOrg" name="changeableYnOrg"/>
 										</td>
-										<th>신규가입구매가여부<em class="required" title="필수"></em></th>
+										<th>신규가입구매가여부<em class="required" title="필수"></em></th>
 										<td>
 											<label class="rdoBtn"><input type="radio" name="newCustOrdYn" id="newCustOrdYnY" value="Y" />Y</label>
 											<label class="rdoBtn"><input type="radio" name="newCustOrdYn" id="newCustOrdYnN" value="N"/>N</label>
@@ -423,6 +423,13 @@
 												<col width="12%"/>
 												<col/>
 											</colgroup>
+											<tr>
+												<th>상품상세</th>
+												<td><div class="tabJrContArea">
+													<textarea class="textareaR4 summernote" name="goodsDesc" id="goodsDesc"></textarea>
+													</div>
+												</td>
+											</tr>
 											<tr>
 												<th>상위(PC)</th>
 												<td><div class="tabJrContArea">
@@ -791,7 +798,8 @@
 			gagaSn.setContents('#goodsPcTopDesc', result.goodsPcTopDesc); 
 			gagaSn.setContents('#goodsMobileTopDesc', result.goodsMobileTopDesc); 
 			gagaSn.setContents('#goodsPcDownDesc', result.goodsPcDownDesc); 
-			gagaSn.setContents('#goodsMobileDownDesc', result.goodsMobileDownDesc); 
+			gagaSn.setContents('#goodsMobileDownDesc', result.goodsMobileDownDesc);
+			gagaSn.setContents('#goodsDesc', result.goodsDesc);
 
 			if (!gagajf.isNull(result.niClsfNm)){
 				$('#goodsDetailForm').find('#itemkindNoti').html('품목기준 고시분류 : ' + result.niClsfNm);

+ 24 - 68
src/main/webapp/WEB-INF/views/goods/GoodsMassRegisterForm.html

@@ -28,26 +28,22 @@
 			<ul class="notice">
 				<li>상품을 대량으로 등록하는 페이지입니다.</li>
 				<li>상품을 등록 할 경우 [승인대기] 상태이며, STYLE 관리자의 [승인완료] 상태 변경 후 FRONT애 노출이 가능합니다.</li>
-				<li><th:block th:if="${wmsSyncYn == 'N'}"><em><b>WMS연동여부가 [N]입니다. 관리자에게 문의하세요.</b></em></th:block></li>
+				<li><th:block th:if="${sessionInfo.roleCd == 'G001_E000'}">촬영업체의 대량수정은 상품정보(상세HTML포함)는 미적용되며 고시정보만 적용됩니다.</th:block></li>
+				<li><th:block th:if="${wmsSyncYn == 'N'}"><em><b>WMS연동여부가 [N]입니다.</b></em></th:block></li>
 			</ul>
 			<ul class="panelBar">
 				<li class="center">
 					<th:block th:if="${sessionInfo.roleCd == 'G001_E000'}">
 						<button type="button" class="btn btn-default btn-lg" onclick="cfnDownloadSampleFile('SF001');">자사상품 등록양식 다운로드</button>
-						<button th:if="${wmsSyncYn == 'Y'}" type="button" class="btn btn-primary btn-lg" id="btnGoodsSelfCreate" >자사상품 등록</button>
+						<button type="button" class="btn btn-primary btn-lg" id="btnGoodsSelfCreate" >자사상품 등록</button>
 					</th:block>
 					<th:block th:if="${sessionInfo.roleCd == 'G001_B000'}">
 						<button type="button" class="btn btn-default btn-lg"  onclick="cfnDownloadSampleFile('SF005');">입점상품 등록양식 다운로드</button>
-						<button th:if="${wmsSyncYn == 'Y'}" type="button" class="btn btn-primary btn-lg" id="btnGoodsCreate" >입점상품 등록</button>
+						<button type="button" class="btn btn-primary btn-lg" id="btnGoodsCreate" >입점상품 등록</button>
 					</th:block>
-					<label class="off"><a href="javascript:void(0);" id="excelList" style="display: none;">엑셀다운로드</a></label>
-					<!--  추후 대량 수정 권한-->
-					<span th:if="${sessionInfo.roleCd == 'G001_B000' 
-									or sessionInfo.roleCd == 'G001_E000'  
-								}" 
-							th:style="'padding-left:80px;'">
+					<span th:if="${sessionInfo.roleCd == 'G001_B000' or sessionInfo.roleCd == 'G001_E000'}" th:style="'padding-left:80px;'">
 						<button type="button" class="btn btn-default btn-lg"  onclick="cfnDownloadSampleFile('SF014');">상품대량수정 등록양식 다운로드</button>
-						<button th:if="${wmsSyncYn == 'Y'}" type="button" class="btn btn-primary btn-lg" id="btnGoodsUpdate" >수정상품 등록</button>
+						<button type="button" class="btn btn-primary btn-lg" id="btnGoodsUpdate" >수정상품 등록</button>
 					</span>
 				</li>
 			</ul>
@@ -100,32 +96,22 @@
 						<i class="fa fa-info" aria-hidden="true"></i>
 						<span class="left aL" style="width:580px;">
 						<!-- class="left" 또는 class="right" -->
-							<em>상품미등록</em><br/>
-							- 상품코드 오류 : 빈값, 길이 11이 아닐경우, '_'가 미존재<br/>
-							- 업체 오류 : 빈값, 'W'나 'F' 가 아닌경우<br/>
-							- 상품명 오류 : 빈값<br/>
-							- 제조국 오류 : 빈값<br/>
+							<em>* 상품미등록 *</em><br/>
+							- 품번 오류(자사) : 빈값, 길이 10이 아닐경우, FRJ는 '-'제외한 길이<br/>
 							- 제조년월일 오류 : 빈값, 날짜형식이 맞는지<br/>
-							- ERP 미존재 상품코드 : ERP에 상품코드가 존재하는지<br/>
-							- 스타일 연도 오류 : 온라인에서 관리되지 않는 스타일 연도<br/>
-							- 성별 오류 : 온라인에서 관리되지 않는 성별<br/>
-							- 컬러 오류 : 온라인에서 관리되지 않는 컬러<br/>
+							- WMS 미존재 품번코드(자사) : 온라인 입고테이블에 품번이 없는 경우<br/>
 							- 상품코드 중복등록요청 : 등록된 상품코드 등록요청<br/>
-							- 품목 오류 : 온라인에서 관리되지 않는 품목<br/>
-							- ERP 브랜드 오류 : 온라인에서 관리되지 않는 ERP 브랜드<br/>
-							- 이미지 유형 오류 : 온라인에서 관리되지 않는 이미지유형<br/>
-							- 상품이미지 필수 오류 : IMG_PATH1
+							- 항목별 오류 : 온라인에서 관리되지 않는 공통코드<br/>
 							- 품목의 고시정보 없음 : 품목의 고시분류 매핑이 안되어 있는 경우<br/>
 							- 고시분류 오류 : 등록요청 고시분류 와 온라인에서 품목과 매핑된 고시분류가 다른 경우<br/>
-							<em>상품등록</em><br/>
-							- ERP 상품 사이즈 정보 없음 : ERP에 상품코드의 사이즈가 없을 경우<br/>
+							<br/>
+							<em>* 상품등록 *</em><br/>
+							- WMS 상품 사이즈 정보 없음 : WMS에 상품코드의 사이즈가 없을 경우<br/>
+							- 고시항목 필수 항목 오류 : 필수 고시항목의 값이 없을 경우<br/>
 						</span>
 					</div>
 					<!-- //아이콘 툴팁 -->
 				</li>
-				<!-- <li class="right">
-					<button type="button" class="btn btn-default btn-lg" id="btnGoodsRegExcelDownLoad">엑셀다운로드</button>
-				</li> -->
 			</ul>
 			<!-- //상단버튼 영역  -->
 			<div id="gridList" style="width: 100%; height: 500px;" class="ag-theme-balham"></div>
@@ -141,10 +127,13 @@
 	var columnDefs = [
 		{headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
 		{headerName: "작업일시", field: "regDt", width: 150, cellClass: 'text-center'},
+		{headerName: "작업자", field: "regNm", width: 120, cellClass: 'text-center'},
 		{headerName: "상품등록여부", field: "regSuccYn", width: 100, cellClass: 'text-center'},
 		{headerName: "등록결과메세지", field: "regFailRsn", width: 200, cellClass: 'text-left'},
-		{headerName: "브랜드코드", field: "brandCd", width: 120, cellClass: 'text-center'},
-		{headerName: "업체코드", field: "supplyCompCd", width: 130, cellClass: 'text-center'},
+		{headerName: "품번", field: "goodsNum", width: 100, cellClass: 'text-center'},
+		{headerName: "브랜드코드", field: "brandCd", width: 100, cellClass: 'text-center'},
+		{headerName: "공급업체상품코드", field: "supplyGoodsCd", width: 130, cellClass: 'text-center'},
+		{headerName: "공급업체코드", field: "supplyCompCd", width: 100, cellClass: 'text-center'},
 		{headerName: "상품코드", field: "goodsCd", width: 130, cellClass: 'text-center'},
 		{headerName: "상품명", field: "goodsNm", width: 150, cellClass: 'text-left'},
 		{headerName: "상품타이틀", field: "goodsTnm", width: 150, cellClass: 'text-left'},
@@ -153,22 +142,18 @@
 		{headerName: "제조일", field: "makeYmd", width: 100, cellClass: 'text-center'},
 		{headerName: "품목", field: "itemkindCd", width: 100, cellClass: 'text-center'},
 		{headerName: "스타일연도", field: "styleYear", width: 100, cellClass: 'text-center'},
-		{headerName: "시즌", field: "seasonCd", width: 80, cellClass: 'text-center'},
-		{headerName: "성별", field: "sexGb", width: 80, cellClass: 'text-center'},
-		{headerName: "품번", field: "goodsNum", width: 100, cellClass: 'text-center'},
+		{headerName: "시즌", field: "seasonCd", width: 100, cellClass: 'text-center'},
+		{headerName: "성별", field: "sexGb", width: 100, cellClass: 'text-center'},
 		{headerName: "정상가", field: "listPrice", width: 100, cellClass: 'text-center'},
 		{headerName: "판매가", field: "currPrice", width: 100, cellClass: 'text-center'},
 		{headerName: "원가", field: "costPrice", width: 100, cellClass: 'text-center'},
-		{headerName: "공급업체상품코드", field: "supplyGoodsCd", width: 130, cellClass: 'text-center'},
 		{headerName: "정상이월", field: "formalGb", width: 100, cellClass: 'text-center'},
 		{headerName: "상품구분", field: "goodsGb", width: 100, cellClass: 'text-center'},
 		{headerName: "과세구분", field: "taxGb", width: 100, cellClass: 'text-center'},
 		{headerName: "성인용품여부", field: "adultYn", width: 100, cellClass: 'text-center'},
-		{headerName: "고시분류코드", field: "niClsfCd", width: 200, cellClass: 'text-center',
-			cellEditorParams: { values: gagaAgGrid.extractValues(niClsfCdList) },
-			valueFormatter: function (params) { return gagaAgGrid.lookupValue(niClsfCdList, params.value); },
-			valueParser: function (params) { return gagaAgGrid.lookupKey(niClsfCdList, params.newValue); }
-		},
+		{headerName: "옵션정보", field: "optStr", width: 150, cellClass: 'text-center'},
+		{headerName: "상품상세 html", field: "goodsContent", width: 150, cellClass: 'text-center'},
+		{headerName: "고시분류코드", field: "niClsfCd", width: 100, cellClass: 'text-center'},
 		{headerName: "고시내용1", field: "niContent1", width: 200, cellClass: 'text-left'},
 		{headerName: "고시내용2", field: "niContent2", width: 200, cellClass: 'text-left'},
 		{headerName: "고시내용3", field: "niContent3", width: 200, cellClass: 'text-left'},
@@ -197,10 +182,6 @@
 		{headerName: "고시내용26", field: "niContent26", width: 200, cellClass: 'text-left'},
 		{headerName: "고시내용27", field: "niContent27", width: 200, cellClass: 'text-left'},
 		{headerName: "고시내용28", field: "niContent28", width: 200, cellClass: 'text-left'}
-		/* {headerName: "옵션문자열", field: "optStr", width: 200, cellClass: 'text-center'},
-		{headerName: "안전재고문자열", field: "baseStockStr", width: 200, cellClass: 'text-center'},
-		{headerName: "현재고문자열", field: "currStockStr", width: 200, cellClass: 'text-center'}, */
-		
 	];
 
 	// Get GridOptions
@@ -260,31 +241,6 @@
 		fnGoodsListSearch();
 	}
 	
-	$('#btnGoodsRegExcelDownLoad').on('click', function() {
-		
-		var date = new Date().format("YYYYMMDDHHmmss");
-		var params = {
-			
-			fileName : "상품대량등록결과_"+ date,
-			sheetName: "DATA"
-		}
-		gridOptions.excelStyles = [
-			{
-				id: 'text-center',
-				dataType: 'string',
-				font: {size : 10, bold: false}
-			},
-			{
-				id: 'text-left',
-				dataType: 'string',
-				font: {size : 10, bold: false}
-			}
-		]
-		
-		gridOptions.api.exportDataAsExcel(params);
-		
-	});
-	
 	// 초기화 클릭시
 	$('#btnInit').on('click', function() {
 		$('#massForm')[0].reset();

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików