wyh 2024-10-17
선거문자 업로드 수정
@e46a95b02b2000a18a9f5518802df57c63bc33ad
src/main/java/itn/let/mjo/msgcampain/web/MjonMsgCampainDataController.java
--- src/main/java/itn/let/mjo/msgcampain/web/MjonMsgCampainDataController.java
+++ src/main/java/itn/let/mjo/msgcampain/web/MjonMsgCampainDataController.java
@@ -5,6 +5,7 @@
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Calendar;
@@ -16,6 +17,7 @@
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.hssf.usermodel.HSSFCell;
 import org.apache.poi.hssf.usermodel.HSSFRow;
 import org.apache.poi.hssf.usermodel.HSSFSheet;
@@ -29,6 +31,8 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.ui.ModelMap;
@@ -62,6 +66,7 @@
 import itn.let.lett.service.HashConfVO;
 import itn.let.lett.service.LetterService;
 import itn.let.lett.service.LetterVO;
+import itn.let.mail.service.StatusResponse;
 import itn.let.mjo.addr.service.AddrGroupService;
 import itn.let.mjo.addr.service.AddrGroupVO;
 import itn.let.mjo.addr.service.AddrService;
@@ -1802,47 +1807,91 @@
 		return jspUrl;
 	}
 	
-	
-		/**
-		 * 선거문자 주소록 그룹 선택시 우측 주소록 리스트 화면 불러오기
-		 *
-		 * @param AddrGroupVO
-		 * @param AddrVO
-		 * @param sessionVO
-		 * @param model
-		 * @return
-		 * @throws Exception
-		 */
-		@RequestMapping(value= {"/web/mjon/msgcampain/selectMsgAddrListAjax.do"})
-		public ModelAndView selectMsgAddrListAjax(
-				@ModelAttribute("searchVO") AddrVO addrVO,
-				ModelMap model, 
-				RedirectAttributes redirectAttributes) throws Exception {
+	/**
+	 * 선거문자 주소록 그룹 선택시 우측 주소록 리스트 화면 불러오기
+	 *
+	 * @param AddrGroupVO
+	 * @param AddrVO
+	 * @param sessionVO
+	 * @param model
+	 * @return
+	 * @throws Exception
+	 */
+	@RequestMapping(value= {"/web/mjon/msgcampain/selectMsgAddrListAjax.do"})
+	public ModelAndView selectMsgAddrListAjax(
+			@ModelAttribute("searchVO") AddrVO addrVO,
+			ModelMap model, 
+			RedirectAttributes redirectAttributes) throws Exception {
 
-			ModelAndView modelAndView = new ModelAndView();
-			modelAndView.setViewName("jsonView");
-			
-			//로그인 권한정보 불러오기
-	    	LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
-	    	String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
-	    	
-	    	if(userId != "") {
-	    		addrVO.setMberId(userId);
-	    	}else {
-	    		
-	    		modelAndView.addObject("message", "로그인 후 이용이 가능합니다.");
-		    	modelAndView.addObject("result", "loginFail");
-		    	return modelAndView;
-	    		
-	    	}
-	    	
-	    	List<AddrVO> resultAddrList = mjonMsgDataService.selectMsgAddrListAjax(addrVO);
-	    	
-	    	modelAndView.addObject("resultAddrList", resultAddrList);
-	    	modelAndView.addObject("result", "success");
-			
-			return modelAndView;
-		}
+		ModelAndView modelAndView = new ModelAndView();
+		modelAndView.setViewName("jsonView");
+		
+		//로그인 권한정보 불러오기
+    	LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
+    	String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
+    	
+    	if(userId != "") {
+    		addrVO.setMberId(userId);
+    	}else {
+    		
+    		modelAndView.addObject("message", "로그인 후 이용이 가능합니다.");
+	    	modelAndView.addObject("result", "loginFail");
+	    	return modelAndView;
+    		
+    	}
+    	
+    	long startTime = System.currentTimeMillis(); // 시작 시간 측정
+    	
+    	List<AddrVO> resultAddrList = mjonMsgDataService.selectMsgAddrListAjax(addrVO);
+    	
+    	long endTime = System.currentTimeMillis(); // 종료 시간 측정
+
+        long elapsedTime = endTime - startTime; // 소요 시간 계산
+        System.out.println("소요 시간: " + elapsedTime + " 밀리초");
+        
+    	
+    	modelAndView.addObject("resultAddrList", resultAddrList);
+    	modelAndView.addObject("result", "success");
+		
+		return modelAndView;
+	}
+	
+	/**
+	 * 선거문자 주소록 그룹 선택시 우측 주소록 리스트 화면 불러오기
+	 *
+	 * @param AddrGroupVO
+	 * @param AddrVO
+	 * @param sessionVO
+	 * @param model
+	 * @return
+	 * @throws Exception
+	 */
+	@RequestMapping(value= {"/web/mjon/msgcampain/selectMsgAddrListAjaxQ.do"})
+	public ResponseEntity<StatusResponse> selectMsgAddrListAjax_advc(@ModelAttribute("searchVO") AddrVO addrVO) {
+		
+	    Map<String, Object> response = new HashMap<>();
+	    
+	    try {
+	        // 로그인 권한 정보 확인
+	        LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated() ? (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser() : null;
+	        String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
+
+    		if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now()));
+
+	        addrVO.setMberId(userId);
+
+	        // OFFSET 계산
+	        int offset = (addrVO.getPage()) * addrVO.getSize();
+	        addrVO.setOffset(offset);
+	        // 데이터 조회
+	        List<AddrVO> resultAddrList = mjonMsgDataService.selectMsgAddrListAjax_advc(addrVO);
+
+	        return ResponseEntity.ok().body(new StatusResponse(HttpStatus.OK, "",resultAddrList));
+	    } catch (Exception e) {
+	        e.printStackTrace();
+			return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "조회 요청 중 오류가 발생하였습니다.", LocalDateTime.now()));
+	    }
+	}
 		
 	/**
 	 * 선거문자 최근 전송내역 리스트 화면 불러오기
@@ -1883,7 +1932,6 @@
 		
 		return "web/msgcampain/MsgLatestListAjax";
 	}	
-	
 	
 	/**
 	 * 선거문자 자주 보내는 번호 리스트 화면 불러오기
src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataSMLView.jsp
--- src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataSMLView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataSMLView.jsp
@@ -1734,7 +1734,7 @@
 
 	/* serialize 를 사용할때는 processData, contentType 옵션 제가할것 */
 	var data = $("#searchAddrGrpForm").serialize();
-	var url = "/web/mjon/msgcampain/selectMsgAddrListAjax.do";
+	var url = "/web/mjon/msgcampain/selectMsgAddrListAjaxQ.do";
 	
 	$.ajax({
         type: "POST",
@@ -1743,41 +1743,19 @@
         dataType:'json',
         async: true,
         cache: false,
-        success: function (returnData, status) {
-			if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
+        success: function (data) {
+        	console.log('data : ', data);
+			if(data.status == "OK"){
 				
-				if(returnData.result == "success"){
+				var addrList = data.object;
 					
-					var addrList = returnData.resultAddrList;
-					var tableData = [];
-					
-					if(addrList.length == 0){
-						
-						alert("주소록 정보가 없습니다.");
-						tableAddr.setData(tableData);
-						return false;
-					}
-					
-					//받는사람 리스트를 담아둔 배열에 신규 추가 데이터를 추가해 준다.
-					for(var i=0; i < addrList.length; i++){
-						tableData.push({
-							groupNm: addrList[i].addrGrpNm
-							, phone: removeDash(addrList[i].addrPhoneNo)
-							, name: addrList[i].addrNm
-							, rep1: addrList[i].addrInfo1
-							, rep2: addrList[i].addrInfo2
-							, rep3: addrList[i].addrInfo3
-							, rep4: addrList[i].addrInfo4
-						});
-					}
-					
-					//우측 주소록 리스트 Tabulator에 입력해주기
-					tableAddr.setData(tableData);
-					
-				}else{
-					alert(returnData.message);
+				if(addrList.length == 0){
+					alert("주소록 정보가 없습니다.");
 					return false;
 				}
+				
+				//우측 주소록 리스트 Tabulator에 입력해주기
+				tableAddr.setData(addrList);
 				
 			} else if(status== 'fail'){
 				alert("주소록 불러오기에 실패하였습니다. !!");
@@ -2788,8 +2766,8 @@
 							<!--// table -->
 						</div>
 						<div class="popup_btn_wrap2">
-							<button type="button" onClick="javascript:addrToList_advc('all'); return false;">전체</button>
-							<button type="button" onClick="javascript:addrToList_advc('select'); return false;">선택</button>
+							<button type="button" onClick="javascript:addrToList_advc('all'); return false;">전체추가</button>
+							<button type="button" onClick="javascript:addrToList_advc('select'); return false;">선택추가</button>
 							<button type="button" onClick="javascript:addrClose(); return false;">닫기</button>
 						</div>
 						<%-- 주소록 레이어 팝업 닫기 실행 코드 --%>
Add a comment
List