Pārlūkot izejas kodu

브랜드관리 - 공급업체, 배송비정책, 출고처 코드 삭제 처리

eskim 5 gadi atpakaļ
vecāks
revīzija
ae70f6c664

+ 8 - 0
src/main/java/com/style24/admin/biz/dao/TsaBusinessDao.java

@@ -190,6 +190,14 @@ public interface TsaBusinessDao {
 	 */
 	void updateBrand(Brand brand);
 
+	/**
+	 * 브랜드별 업체 정보 저장
+	 * @param brand - 브랜드 정보
+	 * @author eskim
+	 * @since 2021. 01. 22
+	 */
+	void saveBrandSupply(Brand brandSupply);
+
 	/**
 	 * 출고처관리 저장
 	 * @param delvLoc - 출고처 정보

+ 24 - 0
src/main/java/com/style24/admin/biz/service/TsaBusinessService.java

@@ -10,6 +10,8 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
 
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.style24.admin.biz.dao.TsaBusinessDao;
 import com.style24.admin.support.security.session.TsaSession;
 import com.style24.core.support.message.TscMessageByLocale;
@@ -276,11 +278,33 @@ public class TsaBusinessService {
 
 		}
 
+		// eskim
+		Collection<Brand> brandSupplyList = null;
+		ObjectMapper mapper = new ObjectMapper();
+
+		try {
+			if (brand.getBrandSupplyListInfo() != null) {
+				brandSupplyList = mapper.readValue(brand.getBrandSupplyListInfo(), new TypeReference<Collection<Brand>>() {
+				});
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
 		if (brand.getMode().equals("N")) { // 신규
 			businessDao.createBrand(brand);
 		} else { // 수정
 			businessDao.updateBrand(brand);
 		}
+
+		if (brandSupplyList != null && !brandSupplyList.isEmpty()) {
+			for(Brand brandSupply: brandSupplyList){
+				brandSupply.setRegNo(TsaSession.getInfo().getUserNo());
+				brandSupply.setBrandCd(brand.getBrandCd());
+				businessDao.saveBrandSupply(brandSupply);
+			}
+
+		}
 	}
 
 	/**

+ 2 - 1
src/main/java/com/style24/admin/biz/web/TsaBusinessController.java

@@ -164,6 +164,7 @@ public class TsaBusinessController extends TsaBaseController {
 	@PostMapping("/supply/company/list")
 	@ResponseBody
 	public Collection<SupplyCompany> getSupplyCompanyList(@RequestBody SupplyCompany supplyComp) {
+		log.info("supplyComp={}", supplyComp);
 		return businessService.getSupplyCompanyList(supplyComp);
 	}
 
@@ -709,7 +710,7 @@ public class TsaBusinessController extends TsaBaseController {
 	@GetMapping("/comapny/search/form")
 	public ModelAndView companySearchForm(SupplyCompany company) {
 		ModelAndView mav = new ModelAndView();
-
+		log.info("company={}", company);
 		mav.addObject("params", company);
 		mav.setViewName("business/SupplyCompanyPopupForm");
 		return mav;

+ 5 - 0
src/main/java/com/style24/persistence/domain/Brand.java

@@ -1,5 +1,7 @@
 package com.style24.persistence.domain;
 
+import java.util.Collection;
+
 import com.style24.persistence.TscBaseDomain;
 
 import lombok.Data;
@@ -43,6 +45,9 @@ public class Brand extends TscBaseDomain {
 
 	private String newSysFileNm;	//신규이미지파일명
 
+	private String brandSupplyListInfo;	//브래드의 업체정보
+	private Collection<Brand> brandSupplyList; // 고시항목
+
 	// 검색조건
 	private String searchTxt;		// 검색어
 	private String callbackFn;		// 콜백함수

+ 38 - 18
src/main/java/com/style24/persistence/mybatis/shop/TsaBusiness.xml

@@ -163,6 +163,16 @@
 		<if test="supplyCompCd != null and supplyCompCd != ''"> <!-- 브랜드관리 화면에서 사용 -->
 		AND    SC.SUPPLY_COMP_CD = #{supplyCompCd}
 		</if>
+		<if test='selfYn != null and (selfYn == "Y" or selfYn == "N")'>
+		<choose>
+		    <when test='selfYn  == "Y"'>
+		AND    SC.DISTRIBUTION_GB IN ('G065_10','G065_11','G065_12') 
+		    </when>
+		    <otherwise>
+		AND    SC.DISTRIBUTION_GB IN ('G065_20')
+		    </otherwise>
+		</choose>
+		</if>
 	</select>
 	
 	<!-- 공급업체 생성 -->
@@ -626,19 +636,19 @@
 	<!-- 브랜드 공급업체 목록 -->
 	<select id="getBrandSupplyList" parameterType="String" resultType="Brand">
 		/* TsaBusiness.getBrandSupplyList */
-		SELECT BRAND_CD
-		     , SITE_CD
-		     , DISP_ORD
-		     , USE_YN
-		     , CATE1_NO
-		FROM   TB_SITE_BRAND
+		SELECT A.BRAND_CD
+		     , A.SUPPLY_COMP_CD
+		     , B.SUPPLY_COMP_NM
+		     , A.REG_NO
+		     , FN_GET_USER_NM(A.REG_NO) AS REG_NM
+		     , DATE_FORMAT(A.REG_DT, '%Y%m%d%H%i%S') AS REG_DT
+		FROM   TB_BRAND_SUPPLY A
+		INNER JOIN TB_SUPPLY_COMPANY B ON A.SUPPLY_COMP_CD = B.SUPPLY_COMP_CD
 		WHERE  BRAND_CD = #{brandCd}
-		AND    USE_YN ='Y'
 	</select>
 	
-	
 	<!-- 브랜드 등록 -->
-	<insert id="createBrand" parameterType="Brand">
+	<insert id="createBrand" parameterType="Brand" keyProperty="brandCd">
 		/* TsaBusiness.createBrand */
 		INSERT INTO TB_BRAND (
 		       BRAND_CD
@@ -647,12 +657,9 @@
 		     , BRAND_GRP_NM
 		     , DISP_NM_LANG
 		     , RGB_CD
-		     , SUPPLY_COMP_CD
 		     , DISTRIBUTION_GB
 		     , SELF_YN
 		     , ERP_BRAND_CD
-		     , DELV_FEE_CD
-		     , DELV_LOC_CD
 		     , SELL_FEE_RATE
 		     , PNT_PRATE10
 		     , PNT_MRATE10
@@ -677,14 +684,11 @@
 		     , #{brandGrpNm}
 		     , #{dispNmLang}
 		     , #{rgbCd}
-		     , #{supplyCompCd}
 		     , #{distributionGb}
 		     , CASE WHEN #{distributionGb} IN ('G065_10','G065_11','G065_12') THEN 'Y'
 		            ELSE 'N'
 		       END
 		     , #{erpBrandCd}
-		     , #{delvFeeCd}
-		     , #{delvLocCd}
 		     , IFNULL(#{sellFeeRate},0)
 		     , IFNULL(#{pntPrate10},0)
 		     , IFNULL(#{pntMrate10},0)
@@ -715,14 +719,11 @@
 		     , BRAND_GRP_NM = #{brandGrpNm}
 		     , DISP_NM_LANG = #{dispNmLang}
 		     , RGB_CD = #{rgbCd}
-		     , SUPPLY_COMP_CD = #{supplyCompCd}
 		     , DISTRIBUTION_GB = #{distributionGb}
 		     , SELF_YN = CASE WHEN #{distributionGb} IN ('G065_10','G065_11','G065_12') THEN 'Y'
 		                      ELSE 'N'
 		                 END
 		     , ERP_BRAND_CD = #{erpBrandCd}
-		     , DELV_FEE_CD = #{delvFeeCd}
-		     , DELV_LOC_CD = #{delvLocCd}
 		     , SELL_FEE_RATE = IFNULL(#{sellFeeRate},0)
 		     , PNT_PRATE10 = IFNULL(#{pntPrate10},0)
 		     , PNT_MRATE10 = IFNULL(#{pntMrate10},0)
@@ -736,6 +737,25 @@
 		WHERE  BRAND_CD = #{brandCd}
 	</insert>
 	
+	<!-- 브랜드별 업체 정보 저장 -->
+	<insert id="saveBrandSupply" parameterType="Brand">
+		/* TsaBusiness.saveBrandSupply */
+		INSERT INTO TB_BRAND_SUPPLY ( 
+		    BRAND_CD
+		  , SUPPLY_COMP_CD
+		  , REG_NO
+		  , REG_DT
+		)
+		VALUES
+		(   #{brandCd}
+		  , #{supplyCompCd}
+		  , #{regNo}
+		  , NOW()
+		)
+		ON DUPLICATE KEY UPDATE
+		     SUPPLY_COMP_CD = #{supplyCompCd} -- 무의미한 데이터
+	</insert>
+	
 	<!-- 재고연계관리 - 출고처 목록 -->
 	<select id="getStockSyncDeliveryLocList" parameterType="DeliveryLoc" resultType="DeliveryLoc">
 		/* TsaBusiness.getStockSyncDeliveryLocList */

+ 27 - 12
src/main/webapp/WEB-INF/views/business/BrandForm.html

@@ -97,7 +97,7 @@
 		<div class="panelStyle">
 			<form id="detailForm" name="detailForm" action="#" th:action="@{'/business/brand/save'}">
 				<input type="hidden" name="mode" value="N"/>
-				
+				<input type="hidden" name="brandSupplyListInfo" />
 				<table class="frmStyle" aria-describedby="등록/수정 폼">
 					<colgroup>
 						<col style="width:10%;"/>
@@ -403,7 +403,7 @@
 		$("#brandImgArea").removeClass("off").addClass("on");
 		
 		// 공급업체정보 조회
-		gagaAgGrid.fetch("/business/supply/company/list?goodsCd=" + $('#goodsDetailForm input[name=goodsCd]').val() , gridGoodsHstoryOptions);
+		gagaAgGrid.fetch("/business/brand/supply/list/" + $('#detailForm input[name=brandCd]').val() , gridOptions2);
 		
 		$("#detailForm select[name=supplyCompCd]").val(event.data.supplyCompCd);
 	}
@@ -502,26 +502,25 @@
 */	
 	// 공급업체 선택시
 	$('#btnSearchSupplyComp').on('click', function() {
-/*
-		if (gagajf.isNull($("#detailForm input[name=searchTxt]").val())){
-			mcxDialog.alert('공급업체 검색어를 입력하세요.');
-			return false;
+		var selfYn = "";
+		selfYn = 'Y'; //자사
+		if($("#detailForm select[name=brandGb]").val() == 'E'){	//입점
+			selfYn = 'N';
 		}
-*/		
-		cfnOpenCompanyListPopup('fnSetSupplyCompInfo', 'S', $("#detailForm input[name=searchTxt]").val());
-		
+
+		cfnOpenCompanyListPopup('fnSetSupplyCompInfo', 'S', $("#detailForm input[name=searchTxt]").val(), '' , selfYn);
 	});
 	
 	// 공급업체 조회 팝업에서 호출
-	var fnSetSupplyCompInfo = function(result) {debugger
+	var fnSetSupplyCompInfo = function(result) {
 		//$("#detailForm input[name=supplyCompCd]").val(result[0].supplyCompCd);
 		//$("#detailForm input[name=supplyCompNm]").val(result[0].supplyCompNm);
 		
 		if (result.length < 1) return;
 		
 		// 기존상품
-		var supplyList = gagaAgGrid.getAllRowData(gridOptions2);
-		var idx = supplyList.length+1; 
+		var brandSupplyList = gagaAgGrid.getAllRowData(gridOptions2);
+		var idx = brandSupplyList.length+1; 
 		
 		var isExist = false;
 		result.forEach(function(supply){
@@ -802,13 +801,29 @@
 			}
 		}
 		
+		//공급업체
+		var allData = gagaAgGrid.getAllRowData(gridOptions2);
+		if (allData.length <= 0){
+			mcxDialog.alert("공급업체를 추가해 주세요.");
+			return false;
+		}
+		
 		mcxDialog.confirm('저장하시겠습니까?', {
 			cancelBtnText: "취소",
 			sureBtnText: "확인",
 			sureBtnClick: function() {
+				
+				var jsonData = JSON.stringify(allData);
+				$('#detailForm input[name=brandSupplyListInfo]').val(jsonData);
+				
 				gagajf.ajaxFormSubmit($('#detailForm').prop('action'), '#detailForm', function() {
 					$('#btnNew').trigger('click');
 					$('#btnSearch').trigger('click');
+
+					// 그리드 삭제
+					allData.forEach(function(item, index) {
+						gridOptions2.api.updateRowData({remove: [item]});
+					});
 				});
 			}
 		});

+ 1 - 1
src/main/webapp/WEB-INF/views/business/SupplyCompanyPopupForm.html

@@ -27,7 +27,7 @@
 		<div class="panelContent">
 			<form id="searchCompanyListForm" name="searchCompanyListForm" action="#" th:action="@{'/business/supply/company/list'}" onsubmit="$('#btnSearchCompanyList').trigger('click'); return false;">
 				<input type="hidden" name="searchGb" value="NAME" />		<!-- 공급업체 목록 검색 조건은 업체명으로만 -->
-
+				<input type="hidden" name="selfYn" th:value="${params.selfYn}" />
 				<table class="frmStyle" aria-describedby="검색조건">
 					<colgroup>
 						<col style="width:15%;"/>

+ 7 - 4
src/main/webapp/ux/js/admin.popup.js

@@ -734,19 +734,22 @@ var cfnOpenFreeGoodsPromotionSetPopup = function(gbn, freegiftSq) {
  *     or
  *     cfnOpenCompanyListPopup('fnResult', 'S', 'TBJ');							// 1번 파라미터 : callBack 함수, 2번 파라미터 : 선택구분, 3번 파라미터 : 팝업 default 검색어
  *     or
- *     cfnOpenCompanyListPopup('fnResult', 'S', 'TBJ', 'inputId');				// 마지막 문자열은 멀티구분 S이고, 결과가 하나일때 supplyCompCd값을 넣어줄 html tag id, S가 아니고, inputId가 존재하지 않으면 무조건 팝업이 열림.
+ *     cfnOpenCompanyListPopup('fnResult', 'S', 'TBJ', 'inputId');				// 문자열은 멀티구분 S이고, 결과가 하나일때 supplyCompCd값을 넣어줄 html tag id, S가 아니고, inputId가 존재하지 않으면 무조건 팝업이 열림.
+ *     or
+ *     cfnOpenCompanyListPopup('fnResult', 'S', 'TBJ', 'inputId', 'Y');			// '': 전체 공급업체(기본값), Y: 자사공급업체, N:입점공급업체
+ *     
  * </pre>
  * @since  : 2020/12/23
  * @author : xodud1202
  */
-var cfnOpenCompanyListPopup = function(callbackfn, multiGb, searchTxt, inputId) {
+var cfnOpenCompanyListPopup = function(callbackfn, multiGb, searchTxt, inputId, selfYn) {
 	var actionUrl = "/business/comapny/search/form?callbackFn=" + callbackfn;
 	if (typeof(multiGb) != 'undefined' && multiGb != null && multiGb == "M") actionUrl += "&multiGb=" + multiGb; else actionUrl += "&multiGb=S";
 	if (typeof(searchTxt) != 'undefined') actionUrl += "&searchTxt=" + encodeURIComponent(searchTxt);
-
+	if (typeof(selfYn) != 'undefined') actionUrl += "&selfYn="+ selfYn ; else actionUrl += "&selfYn=" ;
 	if(multiGb == "S") {
 		if(searchTxt && searchTxt != "" && inputId && inputId != "") {
-			var data = {  searchTxt : searchTxt, searchGb : "NAME"	};
+			var data = {  searchTxt : searchTxt, searchGb : "NAME"};
 			var jsonData = JSON.stringify(data);
 
 			gagajf.ajaxJsonSubmit('/business/supply/company/list', jsonData, function(result) {