Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/develop' into card007

card007 4 gadi atpakaļ
vecāks
revīzija
1a6c6f7d4c

+ 39 - 0
src/main/java/com/style24/admin/biz/dao/TsaPlanDao.java

@@ -644,4 +644,43 @@ public interface TsaPlanDao {
 	 * @since 2021. 06. 29
 	 */
 	void updateShotBrand(Plan param);
+	
+	/**
+	 * 총알배송 브랜드 상품 카운트
+	 *
+	 * @param plan
+	 * @return
+	 * @author sowon
+	 * @since 2021. 6. 29
+	 */
+	int getShotBrandGoodsListCount(Plan param);
+	
+	/**
+	 * 총알배송 브랜드 상품 리스트
+	 *
+	 * @param plan
+	 * @return
+	 * @author sowon
+	 * @since 2021. 06. 29
+	 */
+	Collection<Plan> getShotBrandGoodsList(Plan param);
+	
+	/**
+	 * 총알배송 브랜드 상품 등록
+	 *
+	 * @param
+	 * @author sowon
+	 * @since 2021. 06. 29
+	 */
+	void saveShotBrandGoods(Plan param);
+	
+	/**
+	 * 총알배송 브랜드 상품 삭제
+	 *
+	 * @param
+	 * @author sowon
+	 * @since 2021. 06. 29
+	 */
+	void deleteShotBrandGoods(Plan param);
+	
 }

+ 80 - 1
src/main/java/com/style24/admin/biz/service/TsaPlanService.java

@@ -1676,7 +1676,86 @@ public class TsaPlanService {
 		for (Plan cornerInfo : paramList) {
 			cornerInfo.setRegNo(TsaSession.getInfo().getUserNo());
 			cornerInfo.setUpdNo(TsaSession.getInfo().getUserNo());
-			planDao.savePlanCornerInfo(cornerInfo);
+			planDao.updateShotBrand(cornerInfo);
+		}
+	}
+	
+	/**
+	 * 총알배송 브랜드 상품 카운트
+	 *
+	 * @param plan
+	 * @return
+	 * @author sowon
+	 * @since 2021. 6. 29
+	 */
+	public int getShotBrandGoodsListCount(Plan param) {
+		return planDao.getShotBrandGoodsListCount(param);
+	}
+	
+	/**
+	 * 총알배송 그룹브랜드 상품리스트
+	 *
+	 * @param 
+	 * @return
+	 * @author sowon
+	 * @since 2021. 6. 29
+	 */
+	public Collection<Plan> getShotBrandGoodsList(Plan param){
+		return planDao.getShotBrandGoodsList(param);
+	}
+	
+
+	/**
+	 * 총알배송 그룹브랜드 상품 추가
+	 *
+	 * @param
+	 * @return
+	 * @author sowon
+	 * @since 2021. 6. 129
+	 */
+	@Transactional("shopTxnManager")
+	public void saveShotBrandGoods(Collection<Plan> paramList) {
+		for (Plan param : paramList) {
+			saveShotBrandGoods(param);
+		}
+	}
+	
+	/**
+	 * 총알배송 그룹브랜드 상품 저장
+	 *
+	 * @param
+	 * @return
+	 * @author sowon
+	 * @since 2021. 2. 17
+	 */
+	@Transactional("shopTxnManager")
+	public void saveShotBrandGoods(Plan param) {
+		Plan plan = new Plan();
+		
+		plan.setRegNo(TsaSession.getInfo().getUserNo());
+		plan.setUpdNo(TsaSession.getInfo().getUserNo());
+		plan.setDelYn("N");
+		plan.setGoodsCd(param.getGoodsCd());
+		plan.setDispOrd(param.getDispOrd());
+		plan.setBrandGroupNo(param.getBrandGroupNo());
+		planDao.saveShotBrandGoods(plan);
+	}
+	
+	/**
+	 * 총알배송 그룹브랜드 상품삭제
+	 *
+	 * @param
+	 * @return
+	 * @author sowon
+	 * @since 2021. 6. 29
+	 */
+	@Transactional("shopTxnManager")
+	public void deleteShotBrandGoods(Collection<Plan> paramList) {
+		for (Plan brandInfo : paramList) {
+			brandInfo.setUpdNo(TsaSession.getInfo().getUserNo());
+			planDao.deleteShotBrandGoods(brandInfo);
 		}
 	}
+	
+
 }

+ 3 - 2
src/main/java/com/style24/admin/biz/web/TsaCustomerController.java

@@ -503,6 +503,7 @@ public class TsaCustomerController extends TsaBaseController {
 		// 휴대폰 번호
 		mav.addObject("elementCellPhnno", elementCellPhnno);
 
+
 		// 휴대폰 번호
 		mav.addObject("maskingCellPhnno", StringUtils.defaultString(maskingCellPhnno,""));
 
@@ -511,7 +512,7 @@ public class TsaCustomerController extends TsaBaseController {
 
 		mav.addObject("callBack", TscConstants.CALLCENTER_TEL_NO);
 
-		mav.addObject("pageGb", pageGb);
+		mav.addObject("pageGb", StringUtils.defaultString(pageGb, ""));
 
 		mav.setViewName("customer/LmsPopupForm");
 
@@ -734,7 +735,7 @@ public class TsaCustomerController extends TsaBaseController {
 	/**
 	 * 회원상세-주문내역목록
 	 *
-	 * @param custNo -고객일련번호
+	 * @param customerSearch -고객일련번호, 페이징
 	 * @return Collection<Order>
 	 * @author jsshin
 	 * @since 2021. 01. 21

+ 50 - 0
src/main/java/com/style24/admin/biz/web/TsaMarketingController.java

@@ -2659,6 +2659,8 @@ public class TsaMarketingController extends TsaBaseController {
 		
 		// 코너유형목록
 		mav.addObject("cornerDispTypeList", rendererService.getCommonCodeList("G045", "Y"));
+		// 상품상태
+		mav.addObject("goodsStatList", rendererService.getCommonCodeList("G008", "Y"));
 		
 		mav.setViewName("marketing/ShotDeliveryForm");
 		return mav;
@@ -2691,4 +2693,52 @@ public class TsaMarketingController extends TsaBaseController {
 		return super.ok(message.getMessage("SUCC_0001"));
 	}
 
+	/**
+	 * 총알배송 브랜드 상품조회
+	 *
+	 * @return
+	 * @author sowon
+	 * @since 2021. 6. 29
+	 */
+	@PostMapping("/shot/delivery/goods/list")
+	@ResponseBody
+	public GagaMap getShotBrandGoodsList(@RequestBody Plan plan) {
+		GagaMap result = new GagaMap();
+
+		if ("Y".equals(plan.getPageYn())) {
+			plan.setPageable(new TscPageRequest(plan.getPageNo() - 1, plan.getPageSize()));
+			plan.getPageable().setTotalCount(planService.getShotBrandGoodsListCount(plan));
+		}
+		result.set("pageing", plan);
+		result.set("brandGoodsList", planService.getShotBrandGoodsList(plan));
+		return result;
+	}
+	
+	/**
+	 * 총알배송 브랜드 상품추가
+	 *
+	 * @return
+	 * @author sowon
+	 * @since 2021. 6. 29
+	 */
+	@PostMapping("/shot/delivery/goods/save")
+	@ResponseBody
+	public GagaResponse saveShotBrandGoods(@RequestBody Collection<Plan> paramList) {
+		planService.saveShotBrandGoods(paramList);
+		return super.ok(message.getMessage("SUCC_0001"));
+	}
+	
+	/**
+	 * 총알배송 브랜드 상품 삭제
+	 *
+	 * @return
+	 * @author sowon
+	 * @since 2021. 6. 29
+	 */
+	@PostMapping("/shot/delivery/goods/delete")
+	@ResponseBody
+	public GagaResponse deleteShotBrandGoods(@RequestBody Collection<Plan> paramList) {
+		planService.deleteShotBrandGoods(paramList);
+		return super.ok(message.getMessage("SUCC_0003"));
+	}
 }

+ 11 - 3
src/main/java/com/style24/admin/support/config/TsaRedisSessionConfig.java

@@ -1,8 +1,10 @@
 package com.style24.admin.support.config;
 
 import org.springframework.beans.factory.BeanClassLoaderAware;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.core.env.Environment;
 import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
 import org.springframework.data.redis.serializer.RedisSerializer;
 import org.springframework.security.jackson2.SecurityJackson2Modules;
@@ -34,6 +36,9 @@ public class TsaRedisSessionConfig
 
 	private ClassLoader classLoader;
 
+	@Autowired
+	private Environment env;
+
 	@Override
 	public void setBeanClassLoader(ClassLoader classLoader) {
 		this.classLoader = classLoader;
@@ -89,10 +94,13 @@ public class TsaRedisSessionConfig
 		DefaultCookieSerializer serializer = new DefaultCookieSerializer();
 		serializer.setCookiePath("/");
 		serializer.setUseBase64Encoding(false);
+		String active = env.getProperty("spring.profiles.active");
 
-		// SSL인증서 적용 시 주석 제거
-		serializer.setUseSecureCookie(true);
-		serializer.setSameSite("NONE");
+		if ("run".equals(active) || "locd".equals(active) || "style".equals(active)) {
+			// SSL인증서 적용 시 주석 제거
+			serializer.setUseSecureCookie(true);
+			serializer.setSameSite("NONE");
+		}
 
 		return serializer;
 	}

+ 14 - 14
src/main/java/com/style24/persistence/mybatis/shop/TsaGoods.xml

@@ -510,7 +510,7 @@
 		              <when test='search != null and search == "searchGoodsCd"'>
 		        AND (
 		              <foreach collection="conditionList" item="item" index="index" separator="or">
-		               UPPER(G.GOODS_CD) LIKE CONCAT(UPPER(#{item}),'%') 
+		               G.GOODS_CD LIKE CONCAT(UPPER(#{item}),'%') 
 		              </foreach>
 		             )
 		              </when>
@@ -547,10 +547,10 @@
 		            </choose>
 		        </if>
 		        <if test="goodsCd != null and goodsCd != ''">
-		        AND UPPER(G.GOODS_CD) LIKE CONCAT(UPPER(#{goodsCd}),'%')
+		        AND G.GOODS_CD LIKE CONCAT(UPPER(#{goodsCd}),'%')
 		        </if>
 		        <if test="arrGoodsCd != null and arrGoodsCd.length>0">
-		        AND UPPER(G.GOODS_CD) IN
+		        AND G.GOODS_CD IN
 		            <foreach collection="arrGoodsCd" item="item" index="index"  open="(" close=")" separator=",">
 		        UPPER(#{item})
 		            </foreach>
@@ -2561,7 +2561,7 @@
 		    <choose>
 		      <when test='search != null and search == "searchGoodsCd"'>
 		          <foreach collection="conditionList" item="item" index="index" separator="or">
-		       UPPER(G.GOODS_CD) LIKE CONCAT(UPPER(#{item}),'%') 
+		       G.GOODS_CD LIKE CONCAT(UPPER(#{item}),'%') 
 		          </foreach>
 		      </when>
 		      <when test='search != null and search == "searchGoodsNm"'>
@@ -3037,7 +3037,7 @@
 		    INNER JOIN TB_SUPPLY_COMPANY S ON G.SUPPLY_COMP_CD = S.SUPPLY_COMP_CD
 		    WHERE 1 = 1
 		    <if test="goodsCd != null and goodsCd != ''">
-		    AND UPPER(G.GOODS_CD) LIKE CONCAT(UPPER(#{goodsCd}),'%') 
+		    AND G.GOODS_CD LIKE CONCAT(UPPER(#{goodsCd}),'%') 
 		    </if>
 		    <if test="supplyCompCd != null and supplyCompCd != ''">
 		    AND G.SUPPLY_COMP_CD = #{supplyCompCd}
@@ -3498,7 +3498,7 @@
 		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}),'%')
+		AND G.GOODS_CD LIKE  CONCAT(UPPER(#{condition}),'%')
 				</when>
 		    </choose>
 		</if>
@@ -3587,7 +3587,7 @@
 		              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}),'%')
+		              AND G.GOODS_CD LIKE  CONCAT(UPPER(#{condition}),'%')
 		                      </when>
 		                  </choose>
 		              </if>
@@ -3711,7 +3711,7 @@
 		      <when test='search != null and search == "searchProductNo"'>
 		AND (
 		      <foreach collection="conditionList" item="item" index="index" separator="or">
-		       UPPER(G.PRODUCT_NO) = UPPER(#{item}) 
+		       G.PRODUCT_NO = #{item} 
 		      </foreach>
 		     )
 		      </when>
@@ -3783,10 +3783,10 @@
 		]]>
 		</if>
 		<if test="supplyCompCd != null and supplyCompCd != ''">
-		AND UPPER(S.SUPPLY_COMP_CD) = UPPER(#{supplyCompCd}) 
+		AND S.SUPPLY_COMP_CD = #{supplyCompCd} 
 		</if>
 		<if test="brandCd != null and brandCd != ''">
-		AND UPPER(B.BRAND_CD) = UPPER(#{brandCd}) 
+		AND B.BRAND_CD = #{brandCd}
 		</if>
 		ORDER BY A.UPD_DT DESC
 	</select>
@@ -3835,10 +3835,10 @@
 		]]>
 		</if>
 		<if test="supplyCompCd != null and supplyCompCd != ''">
-		AND UPPER(S.SUPPLY_COMP_CD) = UPPER(#{supplyCompCd}) 
+		AND S.SUPPLY_COMP_CD = #{supplyCompCd} 
 		</if>
 		<if test="brandCd != null and brandCd != ''">
-		AND UPPER(B.BRAND_CD) = UPPER(#{brandCd}) 
+		AND B.BRAND_CD = #{brandCd}
 		</if>
 		ORDER BY A.UPD_DT DESC
 		<include refid="getListPagingCondition_sql"/>
@@ -3913,7 +3913,7 @@
 		        <if test="goodsCds != null and goodsCds != ''">
 		        AND    (
 		                <foreach collection="goodsCds" item="item" index="index" separator="or">
-		                UPPER(GOODS_CD) LIKE CONCAT(UPPER(#{item}),'%') 
+		                GOODS_CD LIKE CONCAT(UPPER(#{item}),'%') 
 		                </foreach>
 		               )
 		        </if>
@@ -4396,7 +4396,7 @@
 		<if test='condition != null and condition != "" '>
 		AND (UPPER(A.GOODS_NUM) LIKE CONCAT(UPPER(#{condition}),'%')
 		     OR 
-		     UPPER(A.GOODS_CD) LIKE CONCAT(UPPER(#{condition}),'%')
+		     A.GOODS_CD LIKE CONCAT(UPPER(#{condition}),'%')
 		     OR 
 		     UPPER(A.SUPPLY_GOODS_CD) LIKE CONCAT(UPPER(#{condition}),'%')
 		    )

+ 106 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsaPlan.xml

@@ -1542,6 +1542,112 @@
 		   ,CORNER_DISP_TYPE = #{cornerDispType}
 		WHERE BRAND_GROUP_NO = #{brandGroupNo}
 	</update>
+	
+	<!-- 기획전 코너 상품 목록 조회 건수 -->
+	<select id="getShotBrandGoodsListCount" parameterType="Plan" resultType="int">
+		/* TsaPlan.getShotBrandGoodsListCount */
+		SELECT COUNT(*) AS CNT
+		FROM TB_SHOT_DELV_GOODS
+		AND DEL_YN = 'N'
+		WHERE BRAND_GROUP_NO = #{brandGroupNo}
+	</select>
+	
+	<select id="getShotBrandGoodsList" parameterType="Plan" resultType="Plan">
+		/* TsaPlan.getShotBrandGoodsList */
+		SELECT Q.*
+		    , IFNULL((SELECT STOCK_QTY FROM TB_GOODS_STOCK WHERE GOODS_CD = Q.GOODS_CD),0) AS STOCK_QTY_SUM
+		    , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG  WHERE GOODS_CD = Q.GOODS_CD AND COLOR_CD = Q.MAIN_COLOR_CD AND DEFAULT_IMG_YN = 'Y' ) AS SYS_IMG_NM
+		    , CASE IFNULL((SELECT COUNT(SYS_IMG_NM) FROM TB_GOODS_IMG  WHERE GOODS_CD = Q.GOODS_CD AND COLOR_CD = Q.MAIN_COLOR_CD AND DEFAULT_IMG_YN = 'Y' ),0) 
+		            WHEN 0 THEN 'N'
+		            ELSE 'Y' END AS GOODS_IMAGE_YN
+		FROM (     
+		      SELECT Z.*
+		      FROM (
+		          SELECT A.*, @rownum := @rownum + 1 AS RNUM 
+		          FROM (
+		              SELECT
+		                       G.GOODS_CD                                                                   
+		                     , G.GOODS_TYPE                                                                 
+		                     , G.SUPPLY_COMP_CD                                                             
+		                     , G.SUPPLY_GOODS_CD                                                            
+		                     , G.GOODS_NUM                                                                  
+		                     , G.GOODS_NM                                                                   
+		                     , G.GOODS_STAT                                                                 
+		                     , G.LIST_PRICE                                                                 
+		                     , G.CURR_PRICE                                                                 
+		                     , G.DC_RATE      
+		                     , G.TAG_PRICE                                                              
+		                     , CASE G.FORMAL_GB WHEN 'G009_20' THEN '이월' ELSE '정상' END AS FORMAL_GB                                                                 
+		                     , G.SEASON_CD       
+		                     , (SELECT SUPPLY_COMP_NM
+		              FROM   TB_SUPPLY_COMPANY
+		              WHERE  SUPPLY_COMP_CD = G.SUPPLY_COMP_CD
+		               ) AS SUPPLY_COMP_NM                                                           
+		                   , G.ERP_STOCK_LINK_YN                                                          
+		                   , G.ERP_PRICE_LINK_YN                                                          
+		                   , G.CHANGEABLE_YN                                                              
+		                   , G.RETURNABLE_YN                                                              
+		                   , G.NEW_CUST_ORD_YN                                                            
+		                   , G.GIFT_PACK_YN                                                               
+		                   , G.DELV_FEE_CD                                                                
+		                   , G.MAIN_COLOR_CD                                                              
+		                   , G.FRST_CFRM_DT                  
+		                   , G.SELL_FEE_RATE                                                              
+		                   , G.PRICE_UPD_DT                   
+		                   , SDE.BRAND_GROUP_NO    
+		                   , SDE.REG_DT                   
+		             FROM TB_GOODS G
+		                   JOIN ( SELECT @rownum := 0) R
+		                   INNER JOIN TB_BRAND B ON G.BRAND_CD = B.BRAND_CD
+		                   INNER JOIN TB_SHOT_DELV_GOODS SDE ON G.GOODS_CD = SDE.GOODS_CD  
+		             WHERE 1=1
+		                 AND SDE.BRAND_GROUP_NO = #{brandGroupNo}
+		                 AND SDE.DEL_YN = 'N'
+		             ORDER BY G.REG_DT DESC, G.GOODS_CD
+		<include refid="getListPagingCondition_sql"/>
+		)Q
+	</select>
+	
+	<insert id="saveShotBrandGoods" parameterType="Plan">
+		/* TsaPlan.saveShotBrandGoods */
+		INSERT INTO TB_SHOT_DELV_GOODS
+		       (
+		          BRAND_GROUP_NO
+		        , GOODS_CD
+		        , DISP_ORD
+		        , DEL_YN
+		        , REG_NO
+		        , REG_DT
+		        , UPD_NO
+		        , UPD_DT
+		       )
+		       VALUES
+		       (
+		          #{brandGroupNo}
+		        , #{goodsCd}
+		        , #{dispOrd}
+		        , #{delYn}
+		        , #{regNo}
+		        , now()
+		        , #{updNo}
+		        , now()
+		       )
+		        ON DUPLICATE KEY
+		          UPDATE
+		        DEL_YN = 'N'
+		      , UPD_DT = now()
+		      , UPD_NO = #{updNo}                                  
+	</insert>
+	
+	<update id="deleteShotBrandGoods" parameterType="Plan">
+		/* TsaPlan.updateShotBrandGoods */
+		UPDATE TB_SHOT_DELV_GOODS
+		SET  DEL_YN = 'Y'
+		   , UPD_NO = #{updNo}
+		   , UPD_DT = NOW()
+		WHERE BRAND_GROUP_NO = #{brandGroupNo}
+		 AND  GOODS_CD       = #{goodsCd}
+	</update>
 </mapper>
 
 

+ 3 - 3
src/main/webapp/WEB-INF/views/customer/CustomerDetailForm.html

@@ -61,7 +61,7 @@
 					<ul>
 						<li class="on"><a href="#tab1" onclick="fnSearchCustInfo();">기본정보</a></li>
 						<li><a href="#tab2" onclick="fnSearchOrder();">주문내역</a></li>
-						<li><a href="#tab3" onclick="fnSearchDelivery();">배송지정보</a></li>
+						<li><a href="#tab3" onclick="fnCustSearchDelivery();">배송지정보</a></li>
 						<li><a href="#tab4" onclick="fnSearchCoupon();">쿠폰내역</a></li>
 						<li><a href="#tab5" onclick="fnSearchPoint();">포인트내역</a></li>
 						<li><a href="#tab6" onclick="fnSearchGiftCard()">상품권내역</a></li>
@@ -1102,7 +1102,7 @@
 			sureBtnClick: function () {
 				gagajf.removeCommaAtNumberFormattedInput('#custAddrForm');
 				let jsonData = JSON.stringify($('#custAddrForm').serializeObject());
-				gagajf.ajaxJsonSubmit('/customer/delivery/addr/save', jsonData, fnSearchDelivery);
+				gagajf.ajaxJsonSubmit('/customer/delivery/addr/save', jsonData, fnCustSearchDelivery);
 			}
 		});
 
@@ -1306,7 +1306,7 @@
 	}
 
 	// 배송지 조회
-	var fnSearchDelivery = function () {
+	var fnCustSearchDelivery = function () {
 		const actionUrl = "/customer/delivery/list/" + custNo;
 		gagaAgGrid.fetch(actionUrl, gridAddrOptions);
 		$('#btnCustAddrNew').trigger('click');

+ 5 - 1
src/main/webapp/WEB-INF/views/display/GoodsCategoryForm.html

@@ -320,7 +320,11 @@
 				}
 			},
 			{headerName: "기존품목코드", field: "itemkindCd", width: 150, cellClass: 'text-center' },
-			{headerName: "품목", field: "itemkindNm", width: 150, cellClass: 'text-center'},
+			{headerName: "품목", field: "itemkindNm", width: 150, cellClass: 'text-center',
+				cellRenderer: function (params) {
+					return params.value.replaceAll("&gt;", ">");
+				}
+			},
 			{headerName: "전시재고", field: "stockQtySum", width: 120, cellClass: 'text-right',
 				valueFormatter: function(params) {	return params.value.addComma();},
 				cellStyle : function(params){

+ 15 - 3
src/main/webapp/WEB-INF/views/display/ItemkindCategoryForm.html

@@ -80,7 +80,11 @@
 			headerName: "품목코드", field: "itemkindCd", width: 150, cellClass: 'text-center',
 			cellRenderer: function (params) { return '<a href="javascript:void(0);">' + params.value + '</a>'; }
 		},
-		{headerName: "품목명", field: "itemkindNm", width: 300}
+		{headerName: "품목명", field: "itemkindNm", width: 300,
+			cellRenderer: function (params) {
+				return params.value.replaceAll("&gt;", ">");
+			}
+		}
 	];
 	
 	let columnDefs2 = [
@@ -103,8 +107,16 @@
 			cellRenderer: function (params) { return gagaAgGrid.lookupValue(cateGbList, params.value); }
 		},
 		{headerName: "카테고리번호", field: "cateNo", width: 150, cellClass: 'text-center'},
-		{headerName: "FULL카테고리번호", field: "fullCateNo", width: 200},
-		{headerName: "FULL카테고리명", field: "fullCateNm", width: 400}
+		{headerName: "FULL카테고리번호", field: "fullCateNo", width: 200,
+			cellRenderer: function (params) {
+				return params.value.replaceAll("&gt;", ">");
+			}
+		},
+		{headerName: "FULL카테고리명", field: "fullCateNm", width: 400,
+			cellRenderer: function (params) {
+				return params.value.replaceAll("&gt;", ">");
+			}
+		}
 	];
 	
 	let gridOptions1 = gagaAgGrid.getGridOptions(columnDefs1);

+ 5 - 1
src/main/webapp/WEB-INF/views/goods/GoodsItemkindForm.html

@@ -192,7 +192,11 @@
 			}
 		},
 		{headerName: "상품명", field: "goodsNm", width: 200, cellClass: 'text-left'},
-		{headerName: "품목명", field: "itemkindNm", width: 250, cellClass: 'text-left'},
+		{headerName: "품목명", field: "itemkindNm", width: 250, cellClass: 'text-left',
+			cellRenderer: function (params) {
+				return params.value.replaceAll("&gt;", ">");
+			}
+		},
 		{headerName: "기존품목코드", field: "itemkindCd", width: 150, cellClass: 'text-center' },
 		{headerName: "변경품목코드", field: "itemkindCdNew", width: 150, cellClass: 'text-center', editable : true,
 			cellEditor: 'textCellEditor',

+ 5 - 1
src/main/webapp/WEB-INF/views/goods/GoodsListForm.html

@@ -470,7 +470,11 @@
 				return '<a href="javascript:void(0);">' + params.value + '</a>';
 			}
 		},
-		{headerName: "품목", field: "itemkindNm", width: 150, cellClass: 'text-center'},
+		{headerName: "품목", field: "itemkindNm", width: 150, cellClass: 'text-center',
+			cellRenderer: function (params) {
+				return params.value.replaceAll("&gt;", ">");
+			}
+		},
 		{headerName: "전시재고", field: "stockQtySum", width: 120, cellClass: 'text-right',
 			valueFormatter: function(params) {	return params.value.addComma();},
 			cellStyle : function(params){

+ 5 - 1
src/main/webapp/WEB-INF/views/goods/GoodsPopupListForm.html

@@ -263,7 +263,11 @@
 		{headerName: "브랜드명", field: "brandEnm", width: 130, cellClass: 'text-center'},
 		{headerName: "상품코드", field: "goodsCd", width: 140, cellClass: 'text-center'},
 		{headerName: "상품명", field: "goodsNm", width: 200, cellClass: 'text-left'},
-		{headerName: "품목", field: "itemkindNm", width: 150, cellClass: 'text-left'},
+		{headerName: "품목", field: "itemkindNm", width: 150, cellClass: 'text-left', 
+			cellRenderer: function (params) {
+				return params.value.replaceAll("&gt;", ">");
+			}
+		},
 		{headerName: "전시재고", field: "stockQtySum", width: 100, cellClass: 'text-right',
 			valueFormatter: function(params) {	return params.value.addComma();}
 		},

+ 1 - 1
src/main/webapp/WEB-INF/views/goods/ItemkindBaseForm.html

@@ -61,7 +61,7 @@
 			cellEditor: 'textCellEditor',
 			cellEditorParams: { maxlength: 50, required: true },
 			cellRenderer: function (params) {
-				return params.value.replaceAll("&lt;", ">");
+				return params.value.replaceAll("&gt;", ">");
 			}
 		},
 		/* {headerName: "품목영문명", field: "itemkindEnm", width: 350, cellClass: 'text-center',

+ 81 - 4
src/main/webapp/WEB-INF/views/marketing/ShotDeliveryForm.html

@@ -44,8 +44,8 @@
 					브랜드명 : <label id="brandNm"></label>
 				</h4>
 				<div class="aR" style="float: right; margin-top: 10px;">
-					<button type="button" class="btn btn-Right btn-default btn-lg"onclick="fnGoodsExcelUpload();">엑셀상품추가</button>
-					<button type="button" class="btn btn-default btn-lg" onclick="cfnDownloadSampleFile('SF012');">엑셀상품추가 양식 다운로드</button>
+					<!-- <button type="button" class="btn btn-Right btn-default btn-lg"onclick="fnGoodsExcelUpload();">엑셀상품추가</button>
+					<button type="button" class="btn btn-default btn-lg" onclick="cfnDownloadSampleFile('SF012');">엑셀상품추가 양식 다운로드</button> -->
 					<button type="button" class="btn btn-default btn-lg" onclick="fnOpenGoodsPopup();">상품추가</button>
 					<button type="button" class="btn btn-danger btn-lg"	onclick="fnDeleteGoods();">선택삭제</button>
 				</div>
@@ -54,14 +54,18 @@
 			<div id="gridListGoods"	style="width: 100%; max-height: 350px; height: 350px;" class="ag-theme-balham lh60"></div>
 			<ul class="panelBar">
 				<li class="center">
-					<div class="tablePaging" id="planListPagination"></div>
+					<div class="tablePaging" id="brandGoodsPagination"></div>
 				</li>
 			</ul>
 		</div>
 	</div>
 </div>
+<script type="text/javascript" src="/ux/plugins/gaga/gaga.paging.js"></script>
 <script th:inline="javascript">
 	var cornerDispTypeList = gagajf.convertToArray([[${cornerDispTypeList}]]);
+	var goodsStatList =gagajf.convertToArray([[${goodsStatList}]]);
+	// 브랜드 그룹번호 전역변수
+	var _brandGroupNo = '';
 	
 	var columnDefsBrand = [
 		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
@@ -146,8 +150,9 @@
 		if (!gagajf.isNull(data.brandNm)) {
 
 			$('#brandNm').html(data.brandNm);
+			_brandGroupNo = data.brandGroupNo;
 
-			//fnConnerGoodsSearch();
+			fnShotGoodsSearch();
 		}
 	}
 	// 상품 추가 버튼 클릭시 
@@ -201,6 +206,78 @@
 			}
 		});
 	}
+	
+	// 상품추가
+	var fnCreateGoods = function(result) {
+		if (result.length < 1) return;
+	
+		var oldGoodsList = gagaAgGrid.getAllRowData(gridOptionsGoods);
+		for (var disp = 0; disp < result.length; disp++) {
+			let addChk = true;
+			
+			// 받아온 data for
+			for(let j = 0 ; j < oldGoodsList.length ; j++) {
+				if(oldGoodsList[j].goodsCd == result[disp].goodsCd) {	addChk = false;	}					// 중복체크
+			}
+			
+			if(addChk) {
+				var goods = { brandGroupNo : _brandGroupNo ,
+						      goodsCd : result[disp].goodsCd ,
+						      dispOrd : oldGoodsList.length+1
+						    };
+				oldGoodsList.unshift(goods);
+			}
+		}
+		
+		mcxDialog.confirm('선택하신 상품을 추가 하시겠습니까?', {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function() {
+				var jsonData = JSON.stringify(oldGoodsList);
+				gagajf.ajaxJsonSubmit('/marketing/shot/delivery/goods/save', jsonData, fnShotGoodsSearch);
+			}
+		});
+	}
+
+
+	// 브랜드 상품 조회
+	var fnShotGoodsSearch = function() {
+		uifnPopupClose('popupGoods');
+		var actionUrl = '/marketing/shot/delivery/goods/list';
+		var data = {brandGroupNo:_brandGroupNo};
+		var jsonData = JSON.stringify(data);
+
+		gagajf.ajaxJsonSubmit(actionUrl, jsonData, function(data) {
+			gridOptionsGoods.api.setRowData(data.brandGoodsList);
+		});
+	}
+	
+	//선택삭제
+	var fnDeleteGoods = function() {
+		var removedData = gagaAgGrid.removeRowData(gridOptionsGoods);
+
+		if (removedData.length == 0) {
+			mcxDialog.alert('선택된 행이 없습니다.');
+			return;
+		}
+
+		mcxDialog.confirm('선택된 상품을 삭제하시겠습니까?', {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function() {
+				var jsonData = JSON.stringify(removedData);
+
+				gagajf.ajaxJsonSubmit('/marketing/shot/delivery/goods/delete', jsonData, function() {
+					fnShotGoodsSearch();
+				});
+			}
+		});
+	}
+	
+	// 엑셀상품추가
+	//var fnGoodsExcelUpload = function() {
+	//	cfnExcelUploadPopup('createGoods', 'fnCreatePlanGoodsExcel');
+	//}
 
 
 	$(document).ready(function() {

+ 5 - 1
src/main/webapp/WEB-INF/views/stock/GoodsSizeStockForm.html

@@ -216,7 +216,11 @@
 		},
 		{headerName: "브랜드명", field: "brandEnm", width: 130, cellClass: 'text-center'},
 		{headerName: "상품명", field: "goodsNm", width: 200, cellClass: 'text-left'},
-		{headerName: "품목", field: "itemkindNm", width: 180, cellClass: 'text-left'},
+		{headerName: "품목", field: "itemkindNm", width: 180, cellClass: 'text-left',
+			cellRenderer: function (params) {
+				return params.value.replaceAll("&gt;", ">");
+			}
+		},
 		{headerName: "상품상태", field: "goodsStat" , width: 120, cellClass: 'text-center',
 			cellEditorParams: { values: gagaAgGrid.extractValues(goodsStatList) },
 			valueFormatter: function (params) { return gagaAgGrid.lookupValue(goodsStatList, params.value); },