Selaa lähdekoodia

재입고 알림 개발중

eskim 5 vuotta sitten
vanhempi
commit
c67d9a9cbc

+ 27 - 0
style24.admin/src/main/java/com/style24/admin/biz/dao/TsaDisplayDao.java

@@ -0,0 +1,27 @@
+package com.style24.admin.biz.dao;
+
+import java.util.Collection;
+
+import com.style24.core.support.annotation.ShopDs;
+import com.style24.persistence.domain.Category;
+
+/**
+ * 전시 Dao
+ *
+ * @author
+ * @since 2020. 12. 16
+ */
+@ShopDs
+public interface TsaDisplayDao {
+
+	/**
+	 * 카테고리관리 목록
+	 *
+	 * @param category
+	 * @return
+	 * @author eskim
+	 * @since 2020. 12. 16
+	 */
+	Collection<Category> getCategoryList(Category category);
+
+}

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

@@ -25,6 +25,7 @@ import com.style24.persistence.domain.NotiInfo;
 import com.style24.persistence.domain.Notice;
 import com.style24.persistence.domain.NoticeGoods;
 import com.style24.persistence.domain.Option;
+import com.style24.persistence.domain.ReinboundInform;
 import com.style24.persistence.domain.Video;
 import com.style24.persistence.domain.WmsColorMapping;
 import com.style24.persistence.domain.WmsSeasonMapping;
@@ -972,4 +973,24 @@ public interface TsaGoodsDao {
 	 */
 	void deleteAdKeywordGoods(AdKeywordGoods adKeywordGoods);
 
+	/**
+	 * 재입고알림 목록 건수
+	 *
+	 * @param goodsSearch
+	 * @return Integer
+	 * @author daehyoung
+	 * @since 2020. 12. 16
+	 */
+	int getInStockAlarmCount(GoodsSearch goodsSearch);
+
+	/**
+	 * 재입고알림 목록
+	 *
+	 * @param goodsSearch
+	 * @return Collection<ReinboundInform>
+	 * @author daehyoung
+	 * @since 2020. 12. 16
+	 */
+	Collection<ReinboundInform> getInStockAlarmList(GoodsSearch goodsSearch);
+
 }

+ 39 - 0
style24.admin/src/main/java/com/style24/admin/biz/service/TsaDisplayService.java

@@ -0,0 +1,39 @@
+package com.style24.admin.biz.service;
+
+import java.util.Collection;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.style24.admin.biz.dao.TsaDisplayDao;
+import com.style24.persistence.domain.Category;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 전시 Service
+ *
+ * @author
+ * @since 2020. 12. 16
+ */
+@Service
+@Slf4j
+public class TsaDisplayService {
+
+	@Autowired
+	private TsaDisplayDao displayDao;
+
+	/**
+	 * 카테고리관리 목록
+	 *
+	 * @param category
+	 * @return
+	 * @author sasa004
+	 * @since 2020.01.07
+	 */
+	public Collection<Category> getCategoryList(Category category) {
+		return displayDao.getCategoryList(category);
+	}
+
+
+}

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

@@ -42,6 +42,7 @@ import com.style24.persistence.domain.NotiInfo;
 import com.style24.persistence.domain.Notice;
 import com.style24.persistence.domain.NoticeGoods;
 import com.style24.persistence.domain.Option;
+import com.style24.persistence.domain.ReinboundInform;
 import com.style24.persistence.domain.SearchData;
 import com.style24.persistence.domain.Video;
 import com.style24.persistence.domain.WmsColorMapping;
@@ -2488,4 +2489,28 @@ public class TsaGoodsService {
 		}
 	}
 
+	/**
+	 * 재입고알림 목록 건수
+	 *
+	 * @param goodsSearch
+	 * @return Integer
+	 * @author eskim
+	 * @since 2020. 12. 16
+	 */
+	public int getInStockAlarmCount(GoodsSearch goodsSearch) {
+		return goodsDao.getInStockAlarmCount(goodsSearch);
+	}
+
+	/**
+	 * 재입고알림 목록
+	 *
+	 * @param goodsSearch
+	 * @return Collection<ReinboundInform>
+	 * @author eskim
+	 * @since 2020. 12. 16
+	 */
+	public Collection<ReinboundInform> getInStockAlarmList(GoodsSearch goodsSearch) {
+		return goodsDao.getInStockAlarmList(goodsSearch);
+	}
+
 }

+ 46 - 0
style24.admin/src/main/java/com/style24/admin/biz/web/TsaDisplayController.java

@@ -0,0 +1,46 @@
+package com.style24.admin.biz.web;
+
+import java.util.Collection;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.style24.admin.biz.service.TsaDisplayService;
+import com.style24.admin.support.controller.TsaBaseController;
+import com.style24.persistence.domain.Category;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 전시 Controller
+ *
+ * @author
+ * @since 2020. 12. 16
+ */
+@Controller
+@RequestMapping("/display")
+@Slf4j
+public class TsaDisplayController extends TsaBaseController {
+
+	@Autowired
+	private TsaDisplayService displayService;
+
+	/**
+	 * 카테고리관리 조회
+	 *
+	 * @param category
+	 * @return
+	 * @author eskim
+	 * @since 2020. 12. 16
+	 */
+	@PostMapping("/category/list")
+	@ResponseBody
+	public Collection<Category> getCategoryList(@RequestBody Category category) {
+		return displayService.getCategoryList(category);
+	}
+
+}

+ 32 - 0
style24.admin/src/main/java/com/style24/admin/biz/web/TsaGoodsController.java

@@ -1590,11 +1590,42 @@ public class TsaGoodsController extends TsaBaseController {
 	public ModelAndView instockAlarmForm() {
 		ModelAndView mav = new ModelAndView();
 
+		// 공급업체
+		String supplyCompCd = "";
+		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList(supplyCompCd, "Y"));
+		// 카테고리 구분
+		mav.addObject("cateGbList", rendererService.getAvailCommonCodeList("G032"));
+		// 상품상태
+		mav.addObject("goodsStatList", rendererService.getAvailCommonCodeList("G008"));
+
 		mav.setViewName("goods/GoodsInstockAlarmForm");
 
 		return mav;
 	}
 
+	/**
+	 * 재입고알림 목록 조회
+	 *
+	 * @param goodsSearch
+	 * @return GagaMap
+	 * @author daehyoung
+	 * @since 2020. 07. 16
+	 */
+	@PostMapping("/inStockAlarm/list")
+	@ResponseBody
+	public GagaMap getInStockAlarmList(@RequestBody GoodsSearch goodsSearch) {
+
+		GagaMap result = new GagaMap();
+
+		goodsSearch.setPageable(new TsaPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
+		goodsSearch.getPageable().setTotalCount(goodsService.getInStockAlarmCount(goodsSearch));
+
+		result.set("pageing", goodsSearch);
+		result.set("inStockAlarmList", goodsService.getInStockAlarmList(goodsSearch));
+
+		return result;
+	}
+
 	/**
 	 * 상품 예약판매관리 화면
 	 *
@@ -2203,4 +2234,5 @@ public class TsaGoodsController extends TsaBaseController {
 		return mav;
 	}
 
+
 }

+ 52 - 0
style24.admin/src/main/java/com/style24/persistence/domain/Category.java

@@ -0,0 +1,52 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 카테고리 Domain
+ *
+ * @author
+ * @since 2020. 12. 16
+ */
+@SuppressWarnings("serial")
+@Data
+public class Category extends TscBaseDomain {
+
+	private Integer cateNo;
+	private String cateType;
+//	private String upperCateCode;
+	private String cateNm;
+	private Integer clsLvl;
+	private String selLvl;
+	private Integer dispOrd;
+	private String dispYn;
+	private String useYn;
+	private String cateGb;
+	private String formalGb;
+	private String leafYn;
+	private String contentsLoc;
+//	private String treePath;
+
+//	private String clocPrefix;      // 메인전시 컨텐츠 위치 프리픽스
+//
+//	private String fullCateCd;
+//	private String fullCateNm;
+//
+	private String siteCd;
+//
+//	private String brandGrpNm;
+//
+	private Integer cate1No;
+	private String cate1Nm;
+	private Integer cate2No;
+	private String cate2Nm;
+	private Integer cate3No;
+	private String cate3Nm;
+	private Integer cate4No;
+	private String cate4Nm;
+	private Integer cate5No;
+	private String cate5Nm;
+
+}

+ 1 - 1
style24.admin/src/main/java/com/style24/persistence/domain/GoodsSearch.java

@@ -77,7 +77,7 @@ public class GoodsSearch extends TscBaseDomain {
 	private String goodsType;
 	private String selfMallYn;
 	private String searchBrandCd;
-
+	private String alarmYn;
 	private String useYn;
 	private String noticeTitle;
 

+ 39 - 0
style24.admin/src/main/java/com/style24/persistence/domain/ReinboundInform.java

@@ -0,0 +1,39 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 재입고 알림 Domain
+ *
+ * @author eskim
+ * @since 2020. 12. 16
+ */
+@SuppressWarnings("serial")
+@Data
+public class ReinboundInform extends TscBaseDomain {
+
+	private Integer rinbdInfoSq;
+	private int custNo;
+	private String goodsCd;
+	private String optCd;
+	private String optCd1;
+	private String optCd2;
+	private String reqDt;
+	private String informDt;
+	private String delYn;
+
+	private String custId;
+	private String brandEnm;
+	private String GoodsNm;
+	private String custNm;
+	private String goodsStat;
+	private String imgType;
+	private String imgPath1;
+	private String imgPath6;
+	private int currStockQty;
+	private String soldoutYn;
+
+
+}

+ 124 - 0
style24.admin/src/main/java/com/style24/persistence/mybatis/shop/TsaDsiplay.xml

@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.style24.admin.biz.dao.TsaDisplayDao">
+
+	<!-- 카테고리관리 목록 -->
+	<select id="getCategoryList" parameterType="Category" resultType="Category">
+		/* TsaDisplay.getCategoryList */
+		<if test='selLvl != null and selLvl != ""'>
+		<choose>
+		<when test='selLvl == "1"'>
+		SELECT SITE_CD
+		     , CATE_GB
+		     , '' AS CATE1_NO
+		     , '' AS CATE2_NO
+		     , '' AS CATE3_NO
+		     , '' AS CATE4_NO
+		     , '' AS CATE5_NO
+		     , '' AS CATE_NO
+		     , '' AS CATE_NM
+		     , '' AS CATE_TYPE     /*카테고리유형*/
+		     , 'N' AS LEAF_YN      /*단말여부*/
+		     , '' AS DISP_ORD      /*우선순위*/
+		     , '' AS FORMAL_GB     /*정상이월구분*/
+		     , '' AS CONTENTS_LOC  /*컨텐츠위치코드*/
+		     , 'N' AS DISP_YN   /*전시여부*/
+		     , 'Y' AS USE_YN   /*사용여부*/
+		FROM TB_CATE1
+		WHERE SITE_CD =  #{siteCd}
+		AND USE_YN = 'Y'
+		GROUP BY SITE_CD, CATE_GB
+		</when>
+		<otherwise>
+		SELECT SITE_CD
+		     , CATE_GB
+		     , CATE1_NO
+		     <if test='selLvl == "2"'>
+		     , '' AS CATE2_NO
+		     , '' AS CATE3_NO
+		     , '' AS CATE4_NO
+		     , '' AS CATE5_NO
+		     , CATE1_NO AS CATE_NO     /*카테고리코드*/
+		     , CATE1_NM AS CATE_NM     /*카테고리명*/
+		     </if>
+		     <if test='selLvl == "3"'>
+		     , CATE2_NO
+		     , '' AS CATE3_NO
+		     , '' AS CATE4_NO
+		     , '' AS CATE5_NO
+		     , CATE2_NO AS CATE_NO     /*카테고리코드*/
+		     , CATE2_NM AS CATE_NM     /*카테고리명*/
+		     </if>
+		     <if test='selLvl == "4"'>
+		     , CATE2_NO
+		     , CATE3_NO
+		     , '' AS CATE4_NO
+		     , '' AS CATE5_NO
+		     , CATE3_NO AS CATE_NO     /*카테고리코드*/
+		     , CATE3_NM AS CATE_NM     /*카테고리명*/
+		     </if>
+		     <if test='selLvl == "5"'>
+		     , CATE2_NO
+		     , CATE3_NO
+		     , CATE4_NO
+		     , '' AS CATE5_NO
+		     , CATE4_NO AS CATE_NO     /*카테고리코드*/
+		     , CATE4_NM AS CATE_NM     /*카테고리명*/
+		     </if>
+		     <if test='selLvl == "6"'>
+		     , CATE2_NO
+		     , CATE3_NO
+		     , CATE4_NO
+		     , CATE5_NO
+		     , CATE5_NO AS CATE_NO     /*카테고리코드*/
+		     , CATE5_NM AS CATE_NM     /*카테고리명*/
+		     </if>
+		     , CATE_TYPE    /*카테고리유형*/
+		     , LEAF_YN      /*단말여부*/
+		     , DISP_ORD     /*우선순위*/
+		     , FORMAL_GB    /*정상이월구분*/
+		     , CONTENTS_LOC /*컨텐츠위치코드*/
+		     , DISP_YN      /*전시여부*/
+		     , USE_YN       /*사용여부*/
+		<if test='selLvl == "2"'>
+		  FROM TB_CATE1
+		 WHERE SITE_CD = #{siteCd}
+		   AND CATE_GB = #{cateGb}
+		</if>
+		<if test='selLvl == "3"'>
+		  FROM TB_CATE2
+		 WHERE SITE_CD = #{siteCd}
+		   AND CATE_GB = #{cateGb}
+		   AND CATE1_NO = #{cate1No}
+		</if>
+		<if test='selLvl == "4"'>
+		  FROM TB_CATE3
+		 WHERE SITE_CD = #{siteCd}
+		   AND CATE_GB = #{cateGb}
+		   AND CATE1_NO = #{cate1No}
+		   AND CATE2_NO = #{cate2No}
+		</if>
+		<if test='selLvl == "5"'>
+		  FROM TB_CATE4
+		 WHERE SITE_CD = #{siteCd}
+		   AND CATE_GB = #{cateGb}
+		   AND CATE1_NO = #{cate1No}
+		   AND CATE2_NO = #{cate2No}
+		   AND CATE3_NO = #{cate3No}
+		</if>
+		<if test='selLvl == "6"'>
+		  FROM TB_CATE5
+		 WHERE SITE_CD = #{siteCd}
+		   AND CATE_GB = #{cateGb}
+		   AND CATE1_NO = #{cate1No}
+		   AND CATE2_NO = #{cate2No}
+		   AND CATE3_NO = #{cate3No}
+		   AND CATE4_NO = #{cate4No}
+		</if>
+		 ORDER BY SITE_CD, DISP_ORD
+		</otherwise>
+		</choose>
+		</if>
+	</select>
+	
+</mapper>

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

@@ -3352,5 +3352,143 @@
 		    </foreach>
 		</if>
 	</delete>
+	
+	<!-- 재입고알림 목록 건수 -->
+	<select id="getInStockAlarmCount" parameterType="GoodsSearch" resultType="int">
+	/* TsaGoods.getInStockAlarmCount */
+		SELECT COUNT(*) AS TOTCNT
+		FROM TB_REINBOUND_INFORM IA
+		INNER JOIN TB_GOODS G ON IA.GOODS_CD = G.GOODS_CD
+		                      AND G.GOODS_STAT IN ('G008_70', 'G008_90', 'G008_96')
+		INNER JOIN TB_BRAND B ON G.BRAND_CD = B.BRAND_CD
+		INNER JOIN TB_SUPPLY_COMPANY SC ON G.SUPPLY_COMP_CD = SC.SUPPLY_COMP_CD
+		INNER JOIN VW_STOCK VS ON IA.GOODS_CD = VS.GOODS_CD
+		                       AND IA.OPT_CD = VS.OPT_CD
+		INNER JOIN TB_CUSTOMER C ON IA.CUST_NO = C.CUST_NO
+		LEFT OUTER JOIN TB_GOODS_IMG GI ON IA.GOODS_CD = GI.GOODS_CD
+		                                AND IA.OPT_CD1 = GI.COLOR_CD
+		WHERE 1=1
+		<if test='alarmYn != null and alarmYn == "Y"'>
+		AND IA.INFORM_DT IS NOT NULL
+		</if>
+		<if test='alarmYn != null and alarmYn == "N"'>
+		AND IA.INFORM_DT IS NULL
+		</if>
+		<if test='condition != null and condition != "" '>
+		    <choose>
+		        <when test='search != null and search == "searchGoodsNm"'>
+		AND UPPER(G.GOODS_NM) LIKE  CONCAT('%',UPPER(#{condition}),'%')
+		        </when>
+				<when test='search != null and search == "searchGoodsCd"'>
+		AND UPPER(G.GOODS_CD) LIKE  CONCAT('%',UPPER(#{condition}),'%')
+				</when>
+		    </choose>
+		</if>
+		<if test='dateGbn != null and dateGbn == "reqDt"'>
+		    <if test="stDate != null and stDate != ''">
+		AND IA.REQ_DT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
+		    </if>
+		    <if test="edDate != null and edDate != ''">
+		    <![CDATA[
+		AND IA.REQ_DT < DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
+		    ]]>
+			</if>
+		</if>
+		<if test='dateGbn != null and dateGbn == "alarmDt"'>
+		    <if test="stDate != null and stDate != ''">
+		AND IA.INFORM_DT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
+		    </if>
+		    <if test="edDate != null and edDate != ''">
+		    <![CDATA[
+		AND IA.INFORM_DT < DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
+		    ]]>
+		    </if>
+		</if>
+		<include refid="getGoodsListCondition_sql"/>
+		ORDER BY IA.REG_DT DESC
+	</select>
+
+	<!-- 재입고알림 목록 -->
+	<select id="getInStockAlarmList" parameterType="GoodsSearch" resultType="ReinboundInform">
+		/* TsaGoods.getInStockAlarmList */
+		SELECT Z.*
+		FROM (
+		       SELECT A.*, @rownum := @rownum + 1 AS RNUM 
+		       FROM (
+		              SELECT IA.RINBD_INFO_SQ
+		                   , IA.GOODS_CD
+		                   , IA.OPT_CD
+		                   , IA.OPT_CD1
+		                   , IA.OPT_CD2
+		                   , DATE_FORMAT(IA.REQ_DT,'%Y%m%d%H%i%S')  AS REQ_DT
+		                   , DATE_FORMAT(IA.INFORM_DT,'%Y%m%d%H%i%S')  AS INFORM_DT
+		                   , FN_GET_USER_NM(IA.REG_NO)             AS REG_NM
+		                   , DATE_FORMAT(IA.REG_DT,'%Y%m%d%H%i%S') AS REG_DT
+		                   , FN_GET_USER_NM(IA.UPD_NO)             AS UPD_NM
+		                   , DATE_FORMAT(IA.UPD_DT,'%Y%m%d%H%i%S') AS UPD_DT
+		                   , IA.CUST_NO
+		                   , C.CUST_ID
+		                   , C.CUST_NM
+		                   , G.GOODS_NM
+		                   , G.GOODS_STAT
+		                   , B.BRAND_ENM
+		                   , G.SELF_MALL_YN
+		                   , GI.IMG_TYPE
+		                   , GI.IMG_PATH1
+		                   , GI.IMG_PATH6
+		                   , VS.CURR_STOCK_QTY
+		                   , VS.SOLDOUT_YN
+		              FROM TB_REINBOUND_INFORM IA
+		              JOIN ( SELECT @rownum := 0) R
+		              INNER JOIN TB_GOODS G ON IA.GOODS_CD = G.GOODS_CD
+		                                    AND G.GOODS_STAT IN ('G008_70', 'G008_90', 'G008_96')
+		              INNER JOIN TB_BRAND B ON G.BRAND_CD = B.BRAND_CD
+		              INNER JOIN TB_SUPPLY_COMPANY SC ON G.SUPPLY_COMP_CD = SC.SUPPLY_COMP_CD
+		              INNER JOIN VW_STOCK VS ON IA.GOODS_CD = VS.GOODS_CD
+		                                     AND IA.OPT_CD = VS.OPT_CD
+		              INNER JOIN TB_CUSTOMER C ON IA.CUST_NO = C.CUST_NO
+		              LEFT OUTER JOIN TB_GOODS_IMG GI ON IA.GOODS_CD = GI.GOODS_CD
+		                                              AND IA.OPT_CD1 = GI.COLOR_CD 
+		              WHERE 1=1
+		              <if test='alarmYn != null and alarmYn == "Y"'>
+		              AND IA.INFORM_DT IS NOT NULL
+		              </if>
+		              <if test='alarmYn != null and alarmYn == "N"'>
+		              AND IA.INFORM_DT IS NULL
+		              </if>
+		              <if test='condition != null and condition != "" '>
+		                  <choose>
+		                      <when test='search != null and search == "searchGoodsNm"'>
+		              AND UPPER(G.GOODS_NM) LIKE  CONCAT('%',UPPER(#{condition}),'%')
+		                      </when>
+		                      <when test='search != null and search == "searchGoodsCd"'>
+		              AND UPPER(G.GOODS_CD) LIKE  CONCAT('%',UPPER(#{condition}),'%')
+		                      </when>
+		                  </choose>
+		              </if>
+		              <if test='dateGbn != null and dateGbn == "reqDt"'>
+		                  <if test="stDate != null and stDate != ''">
+		              AND IA.REQ_DT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
+		                  </if>
+		                  <if test="edDate != null and edDate != ''">
+		                  <![CDATA[
+		              AND IA.REQ_DT < DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
+		                  ]]>
+		                  </if>
+		              </if>
+		              <if test='dateGbn != null and dateGbn == "alarmDt"'>
+		                  <if test="stDate != null and stDate != ''">
+		              AND IA.INFORM_DT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
+		                  </if>
+		                  <if test="edDate != null and edDate != ''">
+		                  <![CDATA[
+		              AND IA.INFORM_DT < DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
+		                  ]]>
+		                  </if>
+		              </if>
+		              <include refid="getGoodsListCondition_sql"/>
+		              ORDER BY IA.REG_DT DESC
+		<include refid="getListPagingCondition_sql"/>
+	</select>
 	
 </mapper>

+ 73 - 70
style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsInstockAlarmForm.html

@@ -32,9 +32,11 @@
 			<div class="panelContent">
 				<table class="frmStyle">
 					<colgroup>
-						<col width="13%"/>
-						<col width="37%"/>
-						<col width="13%"/>
+						<col width="10%"/>
+						<col width="30%"/>
+						<col width="10%"/>
+						<col width="20%"/>
+						<col width="10%"/>
 						<col/>
 					</colgroup>
 					<tr>
@@ -52,52 +54,52 @@
 						<td>
 							<select name="search" id="search">
 								<option value="searchGoodsCd">상품코드</option>
-								<option value="searchGoodsNum">품번</option>
 								<option value="searchGoodsNm">상품명</option>
-								<option value="searchColorNm">색상명</option>
-								<option value="searchSizeNm">옵션명</option>
-							</select>
+<!-- 								<option value="searchColorNm">색상명</option>
+								<option value="searchSizeNm">사이즈명명</option>
+ -->							</select>
 							<input type="text" class="w50p" name="condition" id="condition" maxlength="50"/>
 						</td>
+						<th>발송여부</th>
+						<td>
+							<select id="alarmYn" name="alarmYn">
+								<option value="">[전체]</option>
+								<option value="N">미발송</option>
+								<option value="Y">발송완료</option>
+							</select>
+						</td>
 					</tr>
 					<tr>
 						<th>카테고리</th>
-						<td colspan="3">
-							<input name="siteCd" id="siteCd" type="hidden" value="10"/>
+						<td colspan="5">
+							<input name="siteCd" id="siteCd" type="hidden" value="G000_10"/>
 							<input name="selLvl" id="selLvl" type="hidden"/>
-							<input name="cateCd" id="cateCd" type="hidden"/>
+							<input name="cateNo" id="cateNo" type="hidden"/>
 							<input name="cateType" id="cateType" type="hidden"/>
 							<select name="cateGb" id="selCate1" onchange="fnChangeSelect($(this).val(), 2);">
 								<option value="">[카테고리구분]</option>
 								<option th:if="${cateGbList}" th:each="oneData, status : ${cateGbList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
 							</select>
-							<select id="selCate2" name="tcateCd" onchange="fnChangeSelect($(this).val(), 3);">
-								<option value="">[카테고리]</option>
+							<select id="selCate2" name="cate1No" onchange="fnChangeSelect($(this).val(), 3);">
+								<option value="">[카테고리1]</option>
 							</select>
-							<select id="selCate3" name="mcateCd" onchange="fnChangeSelect($(this).val(), 4);">
-								<option value="">[카테고리]</option>
+							<select id="selCate3" name="cate2No" onchange="fnChangeSelect($(this).val(), 4);">
+								<option value="">[카테고리2]</option>
 							</select>
-							<select id="selCate4" name="scateCd" onchange="fnChangeSelect($(this).val(), 5);">
-								<option value="">[카테고리]</option>
+							<select id="selCate4" name="cate3No" onchange="fnChangeSelect($(this).val(), 5);">
+								<option value="">[카테고리3]</option>
 							</select>
-							<select id="selCate5" name="dcateCd" onchange="fnChangeSelect($(this).val(), 6);">
-								<option value="">[세카테고리]</option>
+							<select id="selCate5" name="cate4No" onchange="fnChangeSelect($(this).val(), 6);">
+								<option value="">[카테고리4]</option>
+							</select>
+							<select id="selCate6" name="cate5No" onchange="fnChangeSelect($(this).val(), 7);">
+								<option value="">[카테고리5]</option>
 							</select>
 						</td>
 					</tr>
 					<tr>
 						<th>일자</th>
-						<td colspan="3" id="sellTerms"></td>
-					</tr>
-					<tr>
-						<th>발송여부</th>
-						<td colspan="3">
-							<select id="alarmYn" name="alarmYn">
-								<option value="">[전체]</option>
-								<option value="N">미발송</option>
-								<option value="Y">발송완료</option>
-							</select>
-						</td>
+						<td colspan="5" id="sellTerms"></td>
 					</tr>
 				</table>
 				<ul class="panelBar">
@@ -115,13 +117,6 @@
 			<ul class="panelBar">
 				<li class="right">
 					<button type="button" class="btn btn-primary btn-lg" id="inStockAlarmSend">재입고알림 발송</button>
-					<div class="iconTooltip">
-						<i class="fa fa-info" aria-hidden="true"></i>
-						<span class="left" style="width:300px;">
-						<!-- class="left" 또는 class="right" -->
-							PC재고, MO재고, APP재고 3가지 재고가 모두 있고, <br>품절여부가 아닐 때, 재입고알림 발송이 가능합니다.
-						</span>
-					</div>
 					검색결과 : <strong><span id="gridRowTotalCount">0</span> 건</strong>&nbsp;
 					쪽번호 <span id="pgNo">0</span>/ <strong id="endPgNo">0</strong>&nbsp;&nbsp;
 					<select id="pageSize" name="pageSize">
@@ -151,6 +146,7 @@
 /*<![CDATA[*/
 
 	var sessRoleCd = [[${sessionInfo.roleCd}]];
+	var goodsStatList = gagajf.convertToArray([[${goodsStatList}]]);
 	var uploadGoodsUrl = [[${@environment.getProperty('upload.goods.view')}]];
 
 	var columnDefs = [
@@ -158,11 +154,6 @@
 		{headerName: 'No', width: 60, cellClass: 'text-center',
 			valueGetter: function(params) { return cfnGridNumner('searchForm',params.node.rowIndex, 'A');}
 		},
-		{headerName: "상세보기", field: "instockAlarmSq", width: 100, cellClass: 'text-center',
-			cellRenderer: function(params) {
-				return '<button type="button" class="btn btn-success btn-sm" onclick="fnOpenInStockDetailPopup(\'' + params.value + '\');">상세정보</button>';
-			}
-		},
 		{headerName: "브랜드명", field: "brandEnm", width: 130, cellClass: 'text-center'},
 		{headerName: "이미지", field: "imgPath1", width: 100, height: 60, cellClass: 'text-center'
 			,cellRenderer: function(params) {
@@ -182,26 +173,44 @@
 			}
 		},
 		{headerName: "상품코드", field: "goodsCd", width: 140, cellClass: 'text-center'},
-		{headerName: "상품명", field: "goodsNm", width: 250, cellClass: 'text-left'
+		{headerName: "상품명", field: "goodsNm", width: 200, cellClass: 'text-left'
 			,cellRenderer: function(params) {
 				return '<a href="javascript:void(0);">' + params.value + '</a>';
 			}
 		},
-		{headerName: "품목", field: "itemkindNm", width: 180, cellClass: 'text-center'},
-		{headerName: "신청수", field: "applycount", width: 80, cellClass: 'text-center'},
+		{headerName: "상품상태", field: "goodsStat" , width: 100, cellClass: 'text-center',
+			cellEditorParams: { values: gagaAgGrid.extractValues(goodsStatList) },
+			valueFormatter: function (params) { return gagaAgGrid.lookupValue(goodsStatList, params.value); },
+			valueParser: function (params) { return gagaAgGrid.lookupKey(goodsStatList, params.newValue); }
+		},
+		{headerName: "색상명", field: "optCd1", width: 130, cellClass: 'text-center'},
+		{headerName: "사이즈", field: "optCd2" , width: 130, cellClass: 'text-center'},
 		{headerName: "가용재고", field: "currStockQty" , width: 100, cellClass: 'text-center'},
-		{headerName: "색상명", field: "colorEnm", width: 150, cellClass: 'text-center'},
-		{headerName: "옵션", field: "sizeNm" , width: 80, cellClass: 'text-center'},
-		{headerName: "최초 접수일시", field: "updDt", width: 120, cellClass: 'text-center',
+		{headerName: "고객ID", field: "custId" , width: 100, cellClass: 'text-center'},
+		{headerName: "고객명", field: "custNm" , width: 100, cellClass: 'text-center'},
+		{headerName: "알림요청일시", field: "regDt", width: 120, cellClass: 'text-center',
 			cellRenderer: function(params) {
 				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD") : '';
 			}
 		},
-		{headerName: "알림 발송일시", field: "alarmDt", width: 120, cellClass: 'text-center',
+		{headerName: "알림 발송일시", field: "informDt", width: 120, cellClass: 'text-center',
 			cellRenderer: function(params) {
 				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD") : '';
 			}
-		}
+		},
+		{headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center',
+			cellRenderer: function(params) {
+				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
+			}
+		},
+		{headerName: "등록자", field: "regNm" , width: 100, cellClass: 'text-center'},
+		{headerName: "수정일시", field: "updDt", width: 150, cellClass: 'text-center',
+			cellRenderer: function(params) {
+				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
+			}
+		},
+		{headerName: "수정자", field: "updNm" , width: 100, cellClass: 'text-center'}
+		
 	];
 	
 	// Get GridOptions
@@ -283,14 +292,14 @@
 		if (!gagajf.isNull(fromDate) || !gagajf.isNull(toDate)) {
 			
 			if (gagajf.isNull(fromDate) || gagajf.isNull(toDate)) {
-				gagaAlert.alert("등록일 조회시 시작일자와 종료일자를 입력하세요.", function() {
+				gagaAlert.alert("일 조회시 시작일자와 종료일자를 입력하세요.", function() {
 					$('#searchForm input[name=stDate]').focus();
 				});
 				return false;
 			}
 
 			if (fromDate > toDate) {
-				gagaAlert.alert("노출기간 시작일자는 종료일자 보다 클 수 없습니다.", function() {
+				gagaAlert.alert("시작일자는 종료일자 보다 클 수 없습니다.", function() {
 					$('#searchForm input[name=stDate]').focus();
 				});
 				return false;
@@ -301,25 +310,27 @@
 	}
 
 	var fnChangeSelect = function(val, selLvl){
-		$("#cateCd").val('');
-		$('#tcateCd').val('');
-		$('#mcateCd').val('');
-		$('#scateCd').val('');
-		$('#dcateCd').val('');
+		$("#cateNo").val('');
+		/* $('#cate1No').val('');
+		$('#cate2No').val('');
+		$('#cate3No').val('');
+		$('#cate4No').val('');
+		$('#cate5No').val(''); */
 		if(val==''){
 			if(selLvl>1){
 				selLvl = selLvl - 1;
 				if(selLvl>2){
-					$("#cateCd").val($("#selCate"+(selLvl-1)).val());
+					$("#cateNo").val($("#selCate"+(selLvl-1)).val());
 				}
 			}else{
 				selLvl = '';
 			}
 		}else{
 			if(selLvl>2){
-				$("#cateCd").val(val);
+				$("#cateNo").val(val);
 			}
 		}
+		debugger;
 		$("#searchForm input[name=selLvl]").val(selLvl);
 		$("#searchForm input[name=searchGb]").val("BASIC");
 		gagajf.ajaxFormSubmit('/display/category/list', "#searchForm", fnChangeCategory);
@@ -328,7 +339,7 @@
 	var fnChangeCategory = function(data){
 		var selLvl = $("#searchForm input[name=selLvl]").val();
 		var html = '<option value="">[선택]</option>';
-		for(var i=1; i<6; i++){
+		for(var i=1; i<7; i++){
 			if(i>selLvl){
 				$("#selCate"+i).html(html);
 			}
@@ -341,7 +352,7 @@
 					cd = data[i].cateGb;
 					nm = gagaAgGrid.lookupValue(cateGbList, cd);
 				}else{
-					cd = data[i].cateCd;
+					cd = data[i].cateNo;
 					nm = data[i].cateNm;
 					$("#cateType").val(data[i].cateType);
 				}
@@ -361,14 +372,6 @@
 		gagaPaging.createPagination(result.pageing.pageable);
 	}
 
-	// 재입고알림 상세정보 버튼
-	var fnOpenInStockDetailPopup = function(instockAlarmSq){
-		var actionUrl = "/goods/inStockAlarm/detail/form?instockAlarmSq=" + instockAlarmSq;
-
-		uifnPopClose('popupInStockDetail');
-		cfnOpenModalPopup(actionUrl, 'popupInStockDetail');
-	}
-	
 	//페이징 
 	$('#searchForm select[name=pageSize]').on('change', function() {
 		$("#searchForm input[name=pageNo]").val('1');
@@ -442,8 +445,8 @@
 		
 		cfnCreateCalendar('#sellTerms', 'stDate', 'edDate', true, '예약일', 'X');
 
-		var selectCode = '<select  name="termGb" id="termGb">';
-		selectCode += '<option value="regDt" seledted>접수일</option>';
+		var selectCode = '<select  name="dateGbn" id="dateGbn">';
+		selectCode += '<option value="reqDt" seledted>요청일</option>';
 		selectCode += '<option value="alarmDt">발송일</option>';
 		selectCode += '</select>';