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

네이버 최저가 테스트 수정

eskim 4 лет назад
Родитель
Сommit
2ce6be26a1

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

@@ -201,6 +201,7 @@ public interface TsaGoodsDao {
 	 */
 	Collection<GagaMap> getGoodsInfoExcelList(GoodsSearch goodsSearch);
 
+
 	/**
 	 * 상품 이미지 필수 항목 입력 여부 조회
 	 *
@@ -849,6 +850,16 @@ public interface TsaGoodsDao {
 	 */
 	Collection<GoodsNaverLowestPrice> getGoodsNaverPriceList(GoodsSearch goodsSearch);
 
+	/**
+	 * 상품 네이버 최저가 엑셀다운로드
+	 *
+	 * @param goodsSearch
+	 * @return
+	 * @author eskim
+	 * @since 2021. 07. 09
+	 */
+	Collection<GagaMap> getGoodsNaverExcelList(GoodsSearch goodsSearch);
+	
 	/**
 	 * 상품 네이버 최저가 최종 작업일
 	 *

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

@@ -2390,6 +2390,43 @@ public class TsaGoodsService {
 		return goodsDao.getGoodsNaverPriceList(goodsSearch);
 	}
 
+	
+	/**
+	 * 상품 네이버 최저가 엑셀다운로드
+	 *
+	 * @param goodsSearch
+	 * @param excelFilenameWithPath - 경로를 포함한 엑셀파일명
+	 * @return
+	 * @author eskim
+	 * @since 2021. 07. 09
+	 */
+	public void getGoodsNaverExcelList(GoodsSearch goodsSearch, String excelFilenameWithPath) {
+		
+		// 헤더 title 설정
+		String[] listTitles = {"상품코드", "브랜드명", "상품명", "정상가", "판매가", "자사즉시할인가", "네이버최저가", "차액",
+			"최저가몰명", "최저가몰링크"};
+
+		// DB 처리 시 사용되는 파라미터명(셀명) 설정
+		String[] cellNames = {"GOODS_CD", "BRAND_ENM", "GOODS_NM", "LIST_PRICE", "CURR_PRICE", "BENEFIT_PRICE",  "LOWEST_PRICE", "PRICE" , 
+			"MALL_NM", "MALL_LINK"};
+
+		String[] cellTypes = {
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_RIGHT.name(),
+			GagaExcelConstants.CellType.CHAR_RIGHT.name(), GagaExcelConstants.CellType.CHAR_RIGHT.name(),
+			GagaExcelConstants.CellType.CHAR_RIGHT.name(), GagaExcelConstants.CellType.CHAR_RIGHT.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name()};
+
+		Collection<GagaMap> dataList = goodsDao.getGoodsNaverExcelList(goodsSearch); 
+
+		try {
+			GagaExcelUtil.createExcel(excelFilenameWithPath, dataList, "상품 네이버 가격", listTitles, cellNames, cellTypes, TsaConstants.EXCEL_FOOTER_TITLE);
+		} catch (Exception e) {
+			throw new IllegalStateException(e);
+		}
+	
+	}
+	
 	/**
 	 * 상품 네이버 최저가 목록
 	 *

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

@@ -2612,6 +2612,50 @@ public class TsaGoodsController extends TsaBaseController {
 		return goodsService.saveGoodsNaverPrice(goodsSearch);
 	}
 
+	
+	/**
+	 * 네이버 최저가 엑셀다운로드
+	 *
+	 * @param goodsSearch
+	 * @return
+	 * @author eskim
+	 * @since 2021. 07. 09
+	 */
+	@GetMapping("/naver/excel/list")
+	public ResponseEntity<InputStreamResource> downloadGoodsNaverExcelList(HttpServletRequest request, GoodsSearch goodsSearch) throws Exception {
+		String excelfileName = "상품_네이버_" + GagaDateUtil.getTodayDateTime() + ".xlsx";
+		String excelFilenameWithPath = GagaFileUtil.getConcatenationPath(env.getProperty("download.path"), "excel", excelfileName);
+
+		// 입점업체담당자는 업체코드 설정
+		if ("G001_B000".equals(TsaSession.getInfo().getRoleCd())) {
+			goodsSearch.setSupplyCompCd(TsaSession.getInfo().getSupplyCompCd());
+			goodsSearch.setMdNo(TsaSession.getInfo().getUserNo().toString());
+		}
+
+		// multi row 검색관련 처리
+		if (!StringUtils.isBlank(goodsSearch.getCondition())) {
+			goodsSearch.setConditionList(goodsSearch.getCondition().replaceAll("\r", "").trim().split("\n"));
+
+			if ("searchExtendGoodsCd".equals(goodsSearch.getSearch())) {
+				goodsSearch.setSearchGb("EXTEND");
+			} else if ("searchMasterGoodsCd".equals(goodsSearch.getSearch())) {
+				goodsSearch.setSearchGb("MASTER");
+			}
+		}
+
+		
+		log.info("[goodsSearch] ={}", goodsSearch);
+		goodsSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
+		goodsSearch.setPageable(new TscPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
+		goodsSearch.getPageable().setTotalCount(goodsService.getGoodsListCount(goodsSearch));
+
+		//log.info("[downloadGoodsInfoExcelList] goodsSearch = {}", goodsSearch);
+
+		// 대용량엑셀파일다운로드는 이런 식으로 ...
+		goodsService.getGoodsNaverExcelList(goodsSearch, excelFilenameWithPath);
+
+		return GagaFileUtil.writeFile(request, excelFilenameWithPath);
+	}
 	/**
 	 * 광고 키워드 관리  화면
 	 *
@@ -2993,7 +3037,25 @@ public class TsaGoodsController extends TsaBaseController {
 		if (!StringUtils.isBlank(goodsSearch.getCondition())) {
 			goodsSearch.setConditionList(goodsSearch.getCondition().replaceAll("\r", "").trim().split("\n"));
 		}
+		if (!StringUtils.isBlank(goodsSearch.getBrandList())) {
+			try {
+				String[] arrBrandCd = mapper.readValue(goodsSearch.getBrandList(), String[].class);
+				goodsSearch.setMultiBrand(arrBrandCd);
+			} catch (Exception e) {
+				e.printStackTrace();
+				throw new IllegalStateException("브랜드코드 검색중 오류로 인해 조회되지 않았습니다.");
+			}
+		}
 
+		if (!StringUtils.isBlank(goodsSearch.getSupplyCompList())) {
+			try {
+				String[] arrSupplyComp = mapper.readValue(goodsSearch.getSupplyCompList(), String[].class);
+				goodsSearch.setMultiSupplyCompCd(arrSupplyComp);
+			} catch (Exception e) {
+				e.printStackTrace();
+				throw new IllegalStateException("업체코드 검색중 오류로 인해 조회되지 않았습니다.");
+			}
+		}
 		goodsSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
 		goodsSearch.setPageable(new TscPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
 		goodsSearch.getPageable().setTotalCount(goodsService.getGoodsQuikDeleverySkipCount(goodsSearch));

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

@@ -3214,7 +3214,81 @@
 		              , G.LIST_PRICE
 		              , G.CURR_PRICE
 		              , IFNULL(GB.PC_CURR_PRICE,G.CURR_PRICE) AS BENEFIT_PRICE
-		              , FN_GET_USER_NM(GE.REG_NO) AS UPD_NM
+		              , FN_GET_USER_NM(GE.REG_NO) AS REG_NM
+		              , DATE_FORMAT(GE.REG_DT,'%Y%m%d%H%i%S') AS REG_DT
+		              , FN_GET_USER_NM(GE.UPD_NO) AS UPD_NM
+		              , DATE_FORMAT(GE.UPD_DT,'%Y%m%d%H%i%S') AS UPD_DT
+		               <choose>
+		                  <when test="searchGb != null and searchGb =='EXCEL'">
+		              , SD.TMP_DISP_ORD
+		                  </when>
+		                  <otherwise>
+		              , 0 AS TMP_DISP_ORD
+		                  </otherwise>
+		              </choose>
+		        FROM TB_GOODS G
+		        INNER JOIN TB_BRAND B ON G.BRAND_CD = B.BRAND_CD
+		        INNER JOIN TB_SUPPLY_COMPANY S ON G.SUPPLY_COMP_CD = S.SUPPLY_COMP_CD
+		        INNER JOIN TB_GOODS_NAVER_LOWEST_PRICE GE ON G.GOODS_NUM = GE.GOODS_CD
+		        LEFT OUTER JOIN TB_GOODS_BENEFIT_PRICE GB ON G.GOODS_CD = GB.GOODS_CD AND GB.CUST_GB = 'G100_00'
+		        <if test="searchGb != null and searchGb =='EXCEL'">
+		        INNER JOIN (
+		                     SELECT SEARCH_CD
+		                          , TMP_DISP_ORD
+		                     FROM (
+		                           SELECT SEARCH_CD
+		                                , MIN(DISP_ORD) AS TMP_DISP_ORD
+		                           FROM TB_SEARCH_DATA
+		                           WHERE REG_NO = #{regNo}
+		                           GROUP BY SEARCH_CD) T
+		                   ) SD
+		                   ON ( (G.GOODS_NUM LIKE CONCAT(SD.SEARCH_CD,'%')) 
+		                        <if test="mdNo != null and mdNo != ''">
+		                        AND G.BRAND_CD IN (
+		                                           SELECT DISTINCT BRAND_CD
+		                                           FROM TB_BRAND_MD
+		                                           WHERE MD_NO = CAST(#{mdNo} AS UNSIGNED)
+		                                           )
+		                       </if>
+		                   )
+		        </if>
+		        WHERE 1=1
+		        <if test="mdNo != null and mdNo != ''">
+		        AND G.BRAND_CD IN (
+		                           SELECT DISTINCT BRAND_CD
+		                           FROM TB_BRAND_MD
+		                           WHERE MD_NO = CAST(#{mdNo} AS UNSIGNED)
+		                          )
+		        </if>
+		        <if test="searchGb == null or searchGb =='BASIC' " >
+		        <include refid="getGoodsListCondition_sql"/>
+		        ORDER BY GE.REQ_YMD, G.GOODS_CD
+		        </if>
+		        <if test="searchGb != null and searchGb =='EXCEL'">
+		        ORDER BY SD.TMP_DISP_ORD
+		        </if>
+	</select>
+	
+	<!-- 상품 네이버 최저가 엑셀  -->
+	<select id="getGoodsNaverExcelList" parameterType="GoodsSearch" resultType="paramMap">
+		/* TsaGoods.getGoodsNaverExcelList */
+		SELECT Z.*
+		      ,CAST(BENEFIT_PRICE AS SIGNED ) - CAST(LOWEST_PRICE AS SIGNED ) AS PRICE
+		FROM (
+		        SELECT
+		                GE.REQ_YMD
+		              , G.GOODS_CD
+		              , GE.MALL_NM
+		              , GE.MALL_LINK
+		              , GE.LOWEST_PRICE
+		              , B.BRAND_ENM
+		              , G.BRAND_CD
+		              , G.GOODS_NUM
+		              , G.GOODS_NM
+		              , G.LIST_PRICE
+		              , G.CURR_PRICE
+		              , IFNULL(GB.PC_CURR_PRICE,G.CURR_PRICE) AS BENEFIT_PRICE
+		              , FN_GET_USER_NM(GE.REG_NO) AS REG_NM
 		              , DATE_FORMAT(GE.REG_DT,'%Y%m%d%H%i%S') AS REG_DT
 		              , FN_GET_USER_NM(GE.UPD_NO) AS UPD_NM
 		              , DATE_FORMAT(GE.UPD_DT,'%Y%m%d%H%i%S') AS UPD_DT
@@ -3267,6 +3341,7 @@
 		        <if test="searchGb != null and searchGb =='EXCEL'">
 		        ORDER BY SD.TMP_DISP_ORD
 		        </if>
+		  ) Z
 	</select>
 	
 	<!-- 상품 네이버 최저가 최종 작업일 -->

+ 3 - 2
src/main/webapp/WEB-INF/views/goods/GoodsNaverPriceForm.html

@@ -232,7 +232,8 @@
 			$("#searchForm input[name=searchGb]").val("BASIC");
 		}
 
-		if(!fnConditionCheck()) return;
+		//전체조회 가능하게
+		//if(!fnConditionCheck()) return;
  		
  		var formId = "#searchForm";
  		gagaAgGrid.fetch($(formId).prop('action'), gridOptions, formId);
@@ -285,7 +286,7 @@
 		}
 
 		var params =  $(formId).serialize();
-		$('#GoodsExcelList').attr({ href : '/goods/info/excel/list?' + params }).get(0).click();
+		$('#GoodsExcelList').attr({ href : '/goods/naver/excel/list?' + params }).get(0).click();
 	}
 	
 	// 업체변경시

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

@@ -178,12 +178,8 @@
 	// Row Click
 	gridOptions.onCellClicked = function(event) {
 		var goodsCd = event.data.goodsCd;
-		if (event.colDef.field == "goodsCd"){
+		if (event.colDef.field == "goodsNm"){
 			cfnOpenGoodsDetailPopup('U',goodsCd);
-			//cfnOpenFrontGoodsPopup(goodsCd, event.data.siteCd);
-		}else if (event.colDef.field == "mallLink"){
-			window.open(event.data.mallLink, "_blank, scrollbars=yes");
-			
 		}
 	}