이호영 이호영 2024-09-02
주소록 등록 배치크기 조정 : js 3만, java batchX
@6ea9e39a9840072e9a6b9047f50b97a3e060e0ca
src/main/java/itn/let/mjo/addr/service/impl/AddrServiceImpl.java
--- src/main/java/itn/let/mjo/addr/service/impl/AddrServiceImpl.java
+++ src/main/java/itn/let/mjo/addr/service/impl/AddrServiceImpl.java
@@ -3,6 +3,7 @@
 import java.nio.charset.Charset;
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.Date;
 import java.util.List;
 import java.util.Locale;
@@ -491,9 +492,11 @@
     	try {
 	        if(addrListVO.size() > 0) {
 	    		// 등록 
+	        	// 배치 제거 
+	        	// 참고 http://wiki.iten.co.kr:9999/doku.php?id=%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8:%EB%AC%B8%EC%9E%90%EC%98%A8_%EA%B0%9C%EC%84%A0:03.%ED%85%8C%EC%8A%A4%ED%8A%B8:%EC%A3%BC%EC%86%8C%EB%A1%9D_30%EB%A7%8C%EA%B1%B4#%EB%B9%84%EA%B5%90_%ED%91%9C
 	            // Batch insert
-                batchInsertAddrListAsync(addrListVO);
-//	    		addrDAO.insertAddrList(addrListVO);
+//                batchInsertAddrListAsync(addrListVO);
+	    		addrDAO.insertAddrList(addrListVO);
 	        	
 	        }
 
@@ -514,12 +517,22 @@
 		// 중복체크 dupliCnt
 		
 		
-		
+        // 현재 시간 가져오기
+        LocalDateTime now = LocalDateTime.now();
+        
+        // 원하는 포맷 설정
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        
+        // 포맷된 시간 문자열로 변환
+        String formattedDateTime = now.format(formatter);
+        
+        // 출력
+        System.out.println(formattedDateTime);
 		//
 		String message = "저장에 성공했습니다.\n저장 : " + addrListVO.size() + "건"
 //			+", 중복 : " + invalid.dupliCnt + "건"
 			+", INERT 총 시간 : " + executionTime+ "초"
-			+", 휴대폰번호 오류 : " + invalid.get() + "건";
+			+", 현재시간 : " + formattedDateTime;
 
 		return new StatusResponse(
 				HttpStatus.OK
src/main/webapp/WEB-INF/jsp/web/addr/AddrList.jsp
--- src/main/webapp/WEB-INF/jsp/web/addr/AddrList.jsp
+++ src/main/webapp/WEB-INF/jsp/web/addr/AddrList.jsp
@@ -265,37 +265,29 @@
 		alert("한 개 이상의 연락처를 입력하세요");
 		return false;
 	}
-// 	else if (selectedData.length > 20000) {
-// 		alert("2만줄 이상의 업로드는 데이터 부하로 업로드 할수 없습니다.");
-// 		return false;
-// 	}
 	
-	var selectMassVal = $(tabluC+" #addrGrpIdInfo option:selected").val();
+	if($objTabul.getData().length > 300000){
+		alert("30만개 까지 등록 가능합니다.");
+		return false;
+	}
+	
+// 	var selectMassVal = $(tabluC+" #addrGrpIdInfo option:selected").val();
 	
 	var loginVO = '${LoginVO}';
-// 	if(loginVO == "" || loginVO == null){
 	if(fn_utils_isEmpty(loginVO)){
 		alert("로그인 후 이용이 가능합니다.");
 		return false;
 	}
 	
-	// tableExcel 그룹의 select 요소들을 확인
-// 	var isPhoneSelected = false;
-// 	var isNameSelected = false;
+	// tableExcel select 요소들을 확인
 	var columns = $objTabul.getColumns();
 	var isAddrPhoneNoSelected = columns.some(column => column.getField() === 'addrPhoneNo');
-
 	if (!isAddrPhoneNoSelected) {
 //		    isPhoneSelected = true;
 		alert('휴대폰이 선택되지 않았습니다.');
 		return false;
 
 	} 
-// 	if (!isPhoneSelected || !isNameSelected) {
-// 		alert('휴대폰 또는 이름이 선택되지 않았습니다.');
-// 		return false;
-// 	}
-	
 	
 	// 주소록이 새로생성이면 새로운 주소록명이 있는지 확인
 	if ($(tabluC+" #addrGrpIdInfo option:selected").val() == "NEW" 
@@ -321,24 +313,17 @@
 	}	
 	
 	var confirmMsg = "저장하시겠습니까?\n이름 20byte, [*1*]~[*4*] 40byte, 메모 250byte 초과 글자는 절사됩니다.";
-// 	if (selectedData.length >= 10000) {
-// 		confirmMsg = "저장하시겠습니까?\n이름 20byte, [*1*]~[*4*] 40byte, 메모 250byte 초과 글자는 절사됩니다.\n1만건 이상 등록시 약 30초정도 소요됩니다.\n잠시만 기다려주세요.";
-// 	}
 	if (confirm(confirmMsg)) {	
 		//로딩창 show
 		fn_loadAddActive();				
 
-        console.time('updateData');
 		setTimeout(setSenderList_advc, 1000);
 // 		setTimeout(setSenderList_old, 1000);
 
-        console.timeEnd('updateData');
-// 		fn_loadAddActive();
-// 		setSenderList_advc();
 	}
 }
-
-// 주소록 등록 advc
+/* 
+// 주소록 등록 old
 function setSenderList_old(){
 
 	// tab에 해당하는 타블레이터 가져오기
@@ -394,7 +379,7 @@
 		}
 	});
 }
-
+ */
 
 function setSenderList_advc(){
 
@@ -406,7 +391,7 @@
     var addrGrpIdInfo = $(tabluC+" #addrGrpIdInfo option:selected").val();
     var addrGrpNmInfo = $(tabluC+" #addrGrpNm").val();
 
-    var batchSize = 15000; // 배치 크기
+    var batchSize = 30000; // 배치 크기
     var totalBatches = Math.ceil(dataToSend.length / batchSize); // 총 배치 수
     var currentBatch = 0; // 현재 배치 인덱스
 
Add a comment
List