bin2107 5 лет назад
Родитель
Сommit
0e738c6640

+ 9 - 0
src/main/java/com/style24/admin/biz/dao/TsaMorebetterDao.java

@@ -18,6 +18,15 @@ import java.util.Collection;
 @Component
 public interface TsaMorebetterDao {
     /* CSB 진행 */
+    /**
+     * 다다익선 리스트 건수
+     * @param moreBetter
+     * @return
+     * @author bin2107
+     * @since 2021. 1. 26
+     */
+    int getMorebetterListCount(MoreBetter moreBetter);
+
     /**
      * 다다익선 프로모션 리스트
      * @param moreBetter

+ 11 - 0
src/main/java/com/style24/admin/biz/service/TsaMorebetterService.java

@@ -39,6 +39,17 @@ public class TsaMorebetterService {
     private TsaCommonService commonService;
 
     /* CSB 진행 */
+    /**
+     * 다다익선 리스트 건수
+     * @param moreBetter
+     * @return
+     * @author bin2107
+     * @since 2021. 1. 26
+     */
+    public int getMorebetterListCount(MoreBetter moreBetter) {
+        return morebetterDao.getMorebetterListCount(moreBetter);
+    }
+
     /**
      * 다다익선 리스트
      * @param param

+ 2 - 4
src/main/java/com/style24/admin/biz/web/TsaMarketingController.java

@@ -564,14 +564,12 @@ public class TsaMarketingController extends TsaBaseController {
 	public GagaMap getMorebetterList(@RequestBody MoreBetter param) {
 		GagaMap result = new GagaMap();
 
-		List<MoreBetter> tmtbList = (ArrayList<MoreBetter>)morebetterService.getMorebetterList(param);
-
 		param.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
 		param.setPageable(new TscPageRequest(param.getPageNo() - 1, param.getPageSize()));
-		param.getPageable().setTotalCount(tmtbList.size());
+		param.getPageable().setTotalCount(morebetterService.getMorebetterListCount(param));
 
 		result.set("pageing", param);
-		result.set("morebetterList", tmtbList);
+		result.set("morebetterList", morebetterService.getMorebetterList(param));
 
 		return result;
 	}

+ 57 - 19
src/main/java/com/style24/persistence/mybatis/shop/TsaMorebetter.xml

@@ -2,35 +2,73 @@
 <!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.TsaMorebetterDao">
 	<!-- // CSB 진행 -->
-	<select id="getMorebetterList" parameterType="MoreBetter" resultType="MoreBetter">
-		/* TsaMarketing.getMorebetterList */
-		SELECT TMTB_SQ
-			 , TMTB_NM
-			 , FN_GET_CODE_NM('G232',TMTB_STAT) as TMTB_STAT
-			 , DATE_FORMAT(TMTB_ST_DT, '%Y.%m.%d') AS TMTB_STDT
-			 , DATE_FORMAT(TMTB_ED_DT, '%Y.%m.%d') AS TMTB_EDDT
-			 , DEL_YN
-			 , FN_GET_USER_NM(REG_NO) AS REG_NM
-			 , DATE_FORMAT(REG_DT, '%Y.%m.%d %H:%i:%S') AS REG_DT
-			 , FN_GET_USER_NM(UPD_NO) AS UPD_NM
-			 , DATE_FORMAT(UPD_DT, '%Y.%m.%d %H:%i:%S') AS UPD_DT
-		FROM TB_TMTB
-		WHERE 1=1
+	<select id="getMorebetterListCount" parameterType="MoreBetter" resultType="int">
+		/* TsaMarketing.getMorebetterListCount */
+		SELECT  COUNT(*) AS TOTCNT
+		FROM	TB_TMTB T
+		WHERE	1=1
 		<if test="tmtbStdt != null and tmtbStdt != '' and tmtbEddt != null and tmtbEddt != ''">
-			AND DATE_FORMAT(TMTB_ST_DT,'%Y%m%d%H%i%S') >= DATE_FORMAT(#{tmtbStdt} , '%Y%m%d%H%i%S')
-			AND DATE_FORMAT(TMTB_ED_DT,'%Y%m%d%H%i%S') <![CDATA[ <= ]]> DATE_FORMAT(#{tmtbEddt} , '%Y%m%d%H%i%S')
+			AND T.TMTB_ST_DT BETWEEN STR_TO_DATE(#{tmtbStdt}, '%Y-%m-%d%H%i%S') AND STR_TO_DATE(CONCAT(#{tmtbEddt}, '235959'),'%Y-%m-%d%H%i%S')
 		</if>
 		<if test="searchTxt != null and searchTxt != ''">
 			<if test="searchGubun != null and searchGubun == 'tmtbSq'">
-				AND TMTB_SQ = #{searchTxt}
+				AND T.TMTB_SQ = #{searchTxt}
 			</if>
 			<if test="searchGubun != null and searchGubun == 'tmtbNm'">
-				AND TMTB_NM = #{searchTxt}
+				AND T.TMTB_NM = #{searchTxt}
 			</if>
 		</if>
-		ORDER BY REG_DT DESC
 	</select>
 
+	<select id="getMorebetterList" parameterType="MoreBetter" resultType="MoreBetter">
+		/* TsaMarketing.getMorebetterList */
+		SELECT Z.*
+		FROM(
+			SELECT @rownum := @rownum + 1 AS RNUM
+					,A.*
+			FROM (
+				SELECT T.TMTB_SQ
+					 , T.TMTB_NM
+					 , FN_GET_CODE_NM('G232',T.TMTB_STAT) as TMTB_STAT
+					 , DATE_FORMAT(T.TMTB_ST_DT, '%Y.%m.%d') AS TMTB_STDT
+					 , DATE_FORMAT(T.TMTB_ED_DT, '%Y.%m.%d') AS TMTB_EDDT
+					 , T.DEL_YN
+					 , FN_GET_USER_NM(T.REG_NO) AS REG_NM
+					 , DATE_FORMAT(T.REG_DT, '%Y.%m.%d %H:%i:%S') AS REG_DT
+					 , FN_GET_USER_NM(T.UPD_NO) AS UPD_NM
+					 , DATE_FORMAT(T.UPD_DT, '%Y.%m.%d %H:%i:%S') AS UPD_DT
+				FROM TB_TMTB T
+				JOIN ( SELECT @rownum := 0) R
+				WHERE 1=1
+				<if test="tmtbStdt != null and tmtbStdt != '' and tmtbEddt != null and tmtbEddt != ''">
+					AND T.TMTB_ST_DT BETWEEN STR_TO_DATE(#{tmtbStdt}, '%Y-%m-%d%H%i%S') AND STR_TO_DATE(CONCAT(#{tmtbEddt}, '235959'),'%Y-%m-%d%H%i%S')
+				</if>
+				<if test="searchTxt != null and searchTxt != ''">
+					<if test="searchGubun != null and searchGubun == 'tmtbSq'">
+						AND T.TMTB_SQ = #{searchTxt}
+					</if>
+					<if test="searchGubun != null and searchGubun == 'tmtbNm'">
+						AND T.TMTB_NM = #{searchTxt}
+					</if>
+				</if>
+				ORDER BY T.REG_DT DESC
+			<include refid="getListPagingCondition_sql"/>
+	</select>
+
+	<sql id="getListPagingCondition_sql">
+		<choose>
+			<when test="pageable != null">
+				) A
+				)Z
+				WHERE RNUM BETWEEN  #{pageable.startRow} AND #{pageable.endRow}
+			</when>
+			<otherwise>
+				) A
+				)Z
+			</otherwise>
+		</choose>
+	</sql>
+
 	<select id="getMorebetterMstInfo" parameterType="Integer" resultType="MoreBetter">
 		/* TsaMarketing.getMorebetterMstInfo */
 		SELECT	   	   TT.TMTB_SQ

+ 10 - 4
src/main/webapp/WEB-INF/views/marketing/MorebetterListForm.html

@@ -97,6 +97,11 @@
 				<!-- 검색결과 영역 -->
 				<!--<div id="gridList" style="width: 100%; height: 700px;" class="ag-theme-balham lh60"></div>-->
 				<div id="gridList" style="width: 100%; height: 570px" class="ag-theme-balham"></div>
+				<ul class="panelBar">
+					<li class="center">
+						<div class="tablePaging" id="morebetterListPagination"></div>
+					</li>
+				</ul>
 			</div>
 		</form>
 <script type="text/javascript" src="/ux/plugins/gaga/gaga.paging.js?v=2019072202"></script>
@@ -104,6 +109,9 @@
 /*<![CDATA[*/
 	var columnDefs = [];
 	columnDefs = [
+		{headerName: 'No', width: 60, cellClass: 'text-center',
+			valueGetter: function(params) { return cfnGridNumner('searchForm',params.node.rowIndex, 'A');}
+		},
 		{headerName: "프로모션ID", field: "tmtbSq", width: 80, cellClass: 'text-center',
 			cellRenderer: function(params) {
 				return "<a href=\"javascript:void(0);\" onclick=\"cfnOpenMorebetterSetPopup('U','" + params.value + "');\">" + params.value + "</a>";
@@ -157,16 +165,14 @@
 
 	// 조회클릭시
 	$('#btnSearch').on('click', function() {
-		$("#searchForm input[name=pageNo]").val('1');
+		if(!fnConditionCheck()) return;
 		fnMorebetterListSearch();
 	});
 
 	// 조회
 	var fnMorebetterListSearch = function() {
-		if(!fnConditionCheck()) return;
-
 		gagaPaging.init('searchForm', fnSearchCallBack, 'morebetterListPagination', $('#searchForm').find('#pageSize').val());
-		gagaPaging.load($("#searchForm input[name=pageNo]").val());
+		gagaPaging.load(1);
 	}
 
 	//검색 조건 확인

+ 51 - 29
src/main/webapp/WEB-INF/views/marketing/MorebetterPopupForm.html

@@ -381,6 +381,7 @@
 		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
 		{headerName: "업체ID", field: "tmtbSupplyCd" , width: 120, cellClass: 'text-center'},
 		{headerName: "분담율(%)", field: "tmtbBurdenRate" , width: 120, cellClass: 'text-center',required: true
+			,editable: true
 			,valueFormatter: function(params) {
 				if(params.value && params.value > 0) {
 					return params.value.addComma();
@@ -388,7 +389,7 @@
 					return '0';
 				}
 			},
-			cellEditor: 'textCellEditor',
+			//cellEditor: 'textCellEditor',
 			cellEditorParams: { maxlength: 3, validType: 'numeric'}
 		},
 		{headerName: "사용여부", field: "useYn" , width: 120, cellClass: 'text-center'},
@@ -400,7 +401,7 @@
 		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
 		{headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
 		{headerName: "시퀀스", field: "tmtbSq", width: 100, cellClass: 'text-center', hide: true},
-		{headerName: "할인구간", field: "sectionGb", width: 100, cellClass: 'text-center',
+		{headerName: "할인구간", field: "sectionGb", width: 100, cellClass: 'text-center', editable: false,
 			cellEditor: 'agRichSelectCellEditor',
 			cellEditorParams: { values: gagaAgGrid.extractValues(sectionGbList), required: true },
 			valueFormatter: function (params) { return gagaAgGrid.lookupValue(sectionGbList, params.value); },
@@ -414,10 +415,9 @@
 					return '0';
 				}
 			},
-			cellEditor: 'textCellEditor',
 			cellEditorParams: { maxlength: 14, validType: 'numeric'}
 		},
-		{headerName: "할인구분", field: "dcWay", width: 100, cellClass: 'text-center',
+		{headerName: "할인구분", field: "dcWay", width: 100, cellClass: 'text-center', editable: false,
 			cellEditor: 'agRichSelectCellEditor',
 			cellEditorParams: { values: gagaAgGrid.extractValues(dcWayList), required: true },
 			valueFormatter: function (params) { return gagaAgGrid.lookupValue(dcWayList, params.value); },
@@ -426,12 +426,18 @@
 		{headerName: "할인값", field: "dcVal", width: 100, cellClass: 'text-right', required: true
 			,valueFormatter: function(params) {
 				if(params.value && params.value > 0) {
+					if(params.data.dcWay == "G240_11"){
+						if(params.value.length > 2){
+							mcxDialog.alert('할인율은 100이하로 설정해주세요.');
+							params.data.dcVal = '0';
+							return '0';
+						}
+					}
 					return params.value.addComma();
 				} else {
 					return '0';
 				}
 			},
-			cellEditor: 'textCellEditor',
 			cellEditorParams: { maxlength: 14, validType: 'numeric'}
 		},
 		{headerName: "구간시퀀스", field: "tmtbSectionSq", width: 150, cellClass: 'text-center', hide: true},
@@ -467,9 +473,9 @@
 	// Grid editable
 	gridOptionsSectionGbList.defaultColDef.editable = true;
 	// Add on options
-	gridOptionsSectionGbList.suppressRowClickSelection = true;
+	//gridOptionsSectionGbList.suppressRowClickSelection = true;
 	gridOptionsSectionGbList.rowSelection = "multiple";
-	gridOptionsSectionGbList.stopEditingWhenGridLosesFocus = true;
+	//gridOptionsSectionGbList.stopEditingWhenGridLosesFocus = true;
 
 	// 다른 다다익선 사용중인 중복상품 엑셀 리스트 설정
 	var gridOptionsDuplicateGoodsList = gagaAgGrid.getGridOptions(columnDuplicateGoodsList);
@@ -520,12 +526,23 @@
 				checkCnt++;
 			}
 		});
-		console.log('checkCnt>>'+checkCnt);
+
 		if(checkCnt < 1){
 			mcxDialog.alert("기본상품을 1개 이상 지정해주세요.");
 			return false;
-		}else{
-			console.log('통과');
+		}
+	};
+
+	var fnBurdenValueCheck = function (){
+		let burdenData = gagaAgGrid.getAllRowData(gridOptionsApplyBurdenList);
+		let totalValue = 0;
+		$.each(burdenData, function(idx, item) {
+			totalValue += parseInt(item.tmtbBurdenRate);
+		});
+
+		if(totalValue > 100) {
+			mcxDialog.alert("업체분담율의 합이 100을 넘을수 없습니다.");
+			return false;
 		}
 	};
 
@@ -588,6 +605,9 @@
 		// 적용상품 그리드에 기본상품 1개이상 있는지 체크
 		fnGoodsGbCheck();
 
+		// 업체분담율 토탈 100% 넘는지 체크
+		fnBurdenValueCheck();
+
 		var data = {
 			mode : $('#moreBetterForm input[name=mode]').val()
 			, tmtbSq : $('#moreBetterForm input[name=disTmtbSq]').val()
@@ -609,7 +629,7 @@
 
 		var jsonData = JSON.stringify(data);
 
-		gagajf.ajaxJsonSubmit($('#moreBetterForm').prop('action'), jsonData, fnMorebetterSaveCollback);
+		//gagajf.ajaxJsonSubmit($('#moreBetterForm').prop('action'), jsonData, fnMorebetterSaveCollback);
 	});
 
 	var fnMorebetterSaveCollback = function(result){
@@ -861,18 +881,19 @@
 		var dcWayValue = $('input:radio[name="dcWay"]:checked').val();
 		var loopRowData = gagaAgGrid.getAllRowData(gridOptionsSectionGbList);
 
-		if (loopRowData.length == 0) {
+		/*if (loopRowData.length == 0) {
 			mcxDialog.alert('ROW 데이터가 없습니다.');
 			return;
+		}*/
+		if(loopRowData.length > 0) {
+			for (i = 0; i < loopRowData.length; i++) {
+				loopRowData[i].sectionGb = sectionGbValue;
+				loopRowData[i].sectionVal = "";
+				loopRowData[i].dcWay = dcWayValue;
+				loopRowData[i].dcVal = "";
+			}
+			gridOptionsSectionGbList.api.setRowData(loopRowData);
 		}
-
-		for(i=0; i<loopRowData.length; i++){
-			loopRowData[i].sectionGb = sectionGbValue;
-			loopRowData[i].sectionVal = "";
-			loopRowData[i].dcWay = dcWayValue;
-			loopRowData[i].dcVal = "";
-		}
-		gridOptionsSectionGbList.api.setRowData(loopRowData);
 	});
 
 	// 할인구분 선택 시 기본 조건 변경
@@ -881,18 +902,19 @@
 		var dcWayValue = $(this).val();
 		var loopRowData = gagaAgGrid.getAllRowData(gridOptionsSectionGbList);
 
-		if (loopRowData.length == 0) {
+		/*if (loopRowData.length == 0) {
 			mcxDialog.alert('ROW 데이터가 없습니다.');
 			return;
+		}*/
+		if(loopRowData.length > 0) {
+			for (i = 0; i < loopRowData.length; i++) {
+				loopRowData[i].sectionGb = sectionGbValue;
+				loopRowData[i].sectionVal = "";
+				loopRowData[i].dcWay = dcWayValue;
+				loopRowData[i].dcVal = "";
+			}
+			gridOptionsSectionGbList.api.setRowData(loopRowData);
 		}
-
-		for(i=0; i<loopRowData.length; i++){
-			loopRowData[i].sectionGb = sectionGbValue;
-			loopRowData[i].sectionVal = "";
-			loopRowData[i].dcWay = dcWayValue;
-			loopRowData[i].dcVal = "";
-		}
-		gridOptionsSectionGbList.api.setRowData(loopRowData);
 	});
 
 	// 공급업체 행삭제