itn 2023-07-24
엑셀불러오기 이름, 치환1~4 바이트수계산 로직 수정
@6f2ba5915978fb861f4483d552630857872caaf6
src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java
--- src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java
+++ src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java
@@ -24,6 +24,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+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;
@@ -4445,6 +4446,8 @@
 		            int errRep2Cnt = 0;
 		            int errRep3Cnt = 0;
 		            int errRep4Cnt = 0;
+		            String errPhoneLine = "";
+		            String errEtcLine = "";
 			        
 		            //엑셀 확장자에 따른 처리 로직 분리
 					if(Ext.equals("xls")) {
@@ -4503,6 +4506,7 @@
 			                			jm.put("name", cellValue);
 			                		}else {
 			                			errNameCnt++;
+			                			errEtcLine += (i+1) + "행(이름) ";
 			                			errSts = false;
 			                			break;
 			                		}
@@ -4514,6 +4518,7 @@
 			                			jm.put("phone", cellValue);
 			                		}else {
 				    	            	errPhoneCnt++;
+				    	            	errPhoneLine += (i+1) + "행 ";
 				    	            	errSts = false;
 				    	            	break;
 			                		}
@@ -4526,6 +4531,7 @@
 			                			jm.put("replace1", cellValue);
 			                		}else {
 			                			errRep1Cnt++;
+			                			errEtcLine += (i+1) + "행(치환1) ";
 			                			errSts = false;
 			                			break;
 			                		}
@@ -4538,6 +4544,7 @@
 			                			jm.put("replace2", cellValue);
 			                		}else {
 			                			errRep2Cnt++;
+			                			errEtcLine += (i+1) + "행(치환2) ";
 			                			errSts = false;
 			                			break;
 			                		}
@@ -4551,6 +4558,7 @@
 			                			jm.put("replace3", cellValue);
 			                		}else {
 			                			errRep3Cnt++;
+			                			errEtcLine += (i+1) + "행(치환3) ";
 			                			errSts = false;
 			                			break;
 			                		}
@@ -4564,6 +4572,7 @@
 			                			jm.put("replace4", cellValue);
 			                		}else {
 			                			errRep4Cnt++;
+			                			errEtcLine += (i+1) + "행(치환4) ";
 			                			errSts = false;
 			                			break;
 			                		}
@@ -4578,13 +4587,29 @@
 			            }
 			            
 			            int resultErrCnt = errPhoneCnt + errNameCnt + errRep1Cnt + errRep2Cnt + errRep3Cnt + errRep4Cnt;
-			            int resultErrCntExceptPhone = errPhoneCnt + errNameCnt + errRep1Cnt + errRep2Cnt + errRep3Cnt + errRep4Cnt;
+			            int resultErrCntExceptPhone = errNameCnt + errRep1Cnt + errRep2Cnt + errRep3Cnt + errRep4Cnt;
 			            
 			            jr.setData(json);
 						jr.setSuccess(true);
 						
 						if(resultErrCnt > 0) {
-							jr.setMessage("유효하지 않은 형식의 전화번호  "+ errPhoneCnt +"건,\n이름 : 20byte, [*1*] [*2*] : 40byte 제한글자수 초과 "+ resultErrCntExceptPhone +"건 있습니다.\n해당 건을 제외하고 문자 발송됩니다.");
+							if (errPhoneCnt <= 10) {
+								if (StringUtils.isNotEmpty(errPhoneLine.trim())) {
+									errPhoneLine = "[" + errPhoneLine.trim() + "]";
+								}
+							}
+							else {
+								errPhoneLine = "";
+							}
+							if (resultErrCntExceptPhone <= 10) {
+								if (StringUtils.isNotEmpty(errEtcLine.trim())) {
+									errEtcLine = "[" + errEtcLine.trim() + "]";
+								}						
+							}
+							else {
+								errEtcLine = "";
+							}							
+							jr.setMessage("유효하지 않은 형식의 전화번호  "+ errPhoneCnt +"건" + errPhoneLine.trim() + "\n이름 : 20byte, [*1*]~[*4*] : 40byte 제한글자수 초과 "+ resultErrCntExceptPhone +"건" + errEtcLine.trim() + " 있습니다.\n해당 건을 제외하고 문자 발송됩니다.");
 						}else {
 							jr.setMessage("");
 						}
@@ -4670,6 +4695,7 @@
 			                			jm.put("name", cellValue);
 			                		}else {
 			                			errNameCnt++;
+			                			errEtcLine += (i+1) + "행(이름) ";
 			                			errSts = false;
 			                			break;
 			                		}
@@ -4682,6 +4708,7 @@
 			                			jm.put("phone", cellValue);
 			                		}else {
 				    	            	errPhoneCnt++;
+				    	            	errPhoneLine += (i+1) + "행 ";
 				    	            	errSts = false;
 				    	            	break;
 			                		}
@@ -4694,6 +4721,7 @@
 			                			jm.put("replace1", cellValue);
 			                		}else {
 			                			errRep1Cnt++;
+			                			errEtcLine += (i+1) + "행(치환1) ";
 			                			errSts = false;
 			                			break;
 			                		}
@@ -4707,6 +4735,7 @@
 			                			jm.put("replace2", cellValue);
 			                		}else {
 			                			errRep2Cnt++;
+			                			errEtcLine += (i+1) + "행(치환2) ";
 			                			errSts = false;
 			                			break;
 			                		}
@@ -4720,6 +4749,7 @@
 			                			jm.put("replace3", cellValue);
 			                		}else {
 			                			errRep3Cnt++;
+			                			errEtcLine += (i+1) + "행(치환3) ";
 			                			errSts = false;
 			                			break;
 			                		}
@@ -4733,6 +4763,7 @@
 			                			jm.put("replace4", cellValue);
 			                		}else {
 			                			errRep4Cnt++;
+			                			errEtcLine += (i+1) + "행(치환4) ";
 			                			errSts = false;
 			                			break;
 			                		}
@@ -4748,13 +4779,29 @@
 			            }
 			            
 			            int resultErrCnt = errPhoneCnt + errNameCnt + errRep1Cnt + errRep2Cnt + errRep3Cnt + errRep4Cnt;
-			            int resultErrCntExceptPhone = errPhoneCnt + errNameCnt + errRep1Cnt + errRep2Cnt + errRep3Cnt + errRep4Cnt;
+			            int resultErrCntExceptPhone = errNameCnt + errRep1Cnt + errRep2Cnt + errRep3Cnt + errRep4Cnt;
 			            
 						jr.setData(json);
 						jr.setSuccess(true);
 						
 						if(resultErrCnt > 0) {
-							jr.setMessage("유효하지 않은 형식의 전화번호  "+ errPhoneCnt +"건,\n이름 : 20byte, [*1*] [*2*] : 40byte 제한글자수 초과 "+ resultErrCntExceptPhone +"건 있습니다.\n해당 건을 제외하고 문자 발송됩니다.");
+							if (errPhoneCnt <= 10) {
+								if (StringUtils.isNotEmpty(errPhoneLine.trim())) {
+									errPhoneLine = "[" + errPhoneLine.trim() + "]";
+								}
+							}
+							else {
+								errPhoneLine = "";
+							}
+							if (resultErrCntExceptPhone <= 10) {
+								if (StringUtils.isNotEmpty(errEtcLine.trim())) {
+									errEtcLine = "[" + errEtcLine.trim() + "]";
+								}						
+							}
+							else {
+								errEtcLine = "";
+							}							
+							jr.setMessage("유효하지 않은 형식의 전화번호  "+ errPhoneCnt +"건" + errPhoneLine.trim() + "\n이름 : 20byte, [*1*]~[*4*] : 40byte 제한글자수 초과 "+ resultErrCntExceptPhone +"건" + errEtcLine.trim() + " 있습니다.\n해당 건을 제외하고 문자 발송됩니다.");
 						}else {
 							jr.setMessage("");
 						}
@@ -5782,32 +5829,28 @@
 		return modelAndView;
 	}
 	
+	// 치환문자 바이트수 체크
 	public boolean getNameRepLenChk(String type, String value) {
-		
+		String charset = "euc-kr";
 		boolean rtnValue = true;
 		
-		if(type.equals("name")) {
-			
-			String tmpNm = value;
-			int nmLen = tmpNm.length();
-			
-			if(nmLen > 12) {
-				
-				rtnValue = false;
-				
+		try {
+			if(type.equals("name")) {
+				String tmpNm = value;
+				int nmLen = tmpNm.getBytes(charset).length;
+				if(nmLen >= 20) {
+					rtnValue = false;
+				}
+			}else if(type.equals("rep")) {
+				String tmpRep = value;
+				int repLen = tmpRep.getBytes(charset).length;
+				if(repLen >= 40) {
+					rtnValue = false;
+				}
 			}
-			
-		}else if(type.equals("rep")) {
-			
-			String tmpRep = value;
-			int repLen = tmpRep.length();
-			
-			if(repLen > 20) {
-				
-				rtnValue = false;
-				
-			}
-			
+		}
+		catch(Exception e) {
+			rtnValue = false;
 		}
 		
 		return rtnValue;
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
@@ -130,11 +130,11 @@
 		
 		if(fileExt == "xls" || fileExt == "xlsx"){
 			
-			url = "/web/mjon/msgcampain/sendExelFilePhoneNumAjax.do";
+			url = "/web/mjon/msgdata/sendExelFilePhoneNumAjax.do";
 			
 		}else if(fileExt = "txt"){
 			
-			url = "/web/mjon/msgcampain/sendTxtFilePhoneNumAjax.do";
+			url = "/web/mjon/msgdata/sendTxtFilePhoneNumAjax.do";
 			
 		}else{
 			
@@ -3368,7 +3368,7 @@
 						<div class="titBox">
 							<p>- 최대 2만 건까지 등록할 수 있습니다.</p>
 							<p>- [엑셀 불러오기]시 문서의 A, B, C, D열을 불러옵니다.(지원하는 파일 형식 : xls, xlsx)</p>
-							<p>- 이름 : 20byte, [*1*] [*2*] : 40byte까지 입력 가능합니다.</p>
+							<p>- 이름 : 20byte, [*1*]~[*4*] : 40byte까지 입력 가능합니다.</p>
 							<p>- 휴대폰 항목은 숫자, 하이픈(-)만 인식하며, 번호 앞에 0이 생략되어도 정상 등록됩니다.
 							</p>
 							<%-- <button type="button" class="excel_btn" onclick="location.href='/cmm/fms/FileDown.do?atchFileId=FILE_000000000011651&fileSn=1'"><i></i>샘플파일 다운로드</button> --%>
src/main/webapp/WEB-INF/jsp/web/msgcampain/excel/MsgExcelDataSMLView.jsp
--- src/main/webapp/WEB-INF/jsp/web/msgcampain/excel/MsgExcelDataSMLView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgcampain/excel/MsgExcelDataSMLView.jsp
@@ -3010,7 +3010,7 @@
 					<div class="titBox">
 						<p>- 최대 2만 건까지 등록할 수 있습니다.</p>
 						<p>- [엑셀 불러오기]시 문서의 A, B, C, D열을 불러옵니다.(지원하는 파일 형식 : xls, xlsx)</p>
-						<p>- 이름 : 20byte, [*1*] [*2*] : 40byte까지 입력 가능합니다.</p>
+						<p>- 이름 : 20byte, [*1*]~[*4*] : 40byte까지 입력 가능합니다.</p>
 						<p>- 휴대폰 항목은 숫자, 하이픈(-)만 인식하며, 번호 앞에 0이 생략되어도 정상 등록됩니다.
 						</p>
 						<%-- <button type="button" class="excel_btn" onclick="location.href='/cmm/fms/FileDown.do?atchFileId=FILE_000000000011651&fileSn=1'"><i></i>샘플파일 다운로드</button> --%>
src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp
--- src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp
@@ -3250,7 +3250,7 @@
 						<div class="titBox">
 							<p>- 최대 2만 건까지 등록할 수 있습니다.</p>
 							<p>- [엑셀 불러오기]시 문서의 A, B, C, D열을 불러옵니다.(지원하는 파일 형식 : xls, xlsx)</p>
-							<p>- 이름 : 20byte, [*1*] [*2*] : 40byte까지 입력 가능합니다.</p>
+							<p>- 이름 : 20byte, [*1*]~[*4*] : 40byte까지 입력 가능합니다.</p>
 							<p>- 휴대폰 항목은 숫자, 하이픈(-)만 인식하며, 번호 앞에 0이 생략되어도 정상 등록됩니다.
 							</p>
 							<!-- <button type="button" class="excel_btn" onclick="location.href='/cmm/fms/FileDown.do?atchFileId=FILE_000000000011651&fileSn=1'"><i></i>샘플파일 다운로드</button> -->
src/main/webapp/WEB-INF/jsp/web/msgdata/excel/MsgExcelDataSMLView.jsp
--- src/main/webapp/WEB-INF/jsp/web/msgdata/excel/MsgExcelDataSMLView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgdata/excel/MsgExcelDataSMLView.jsp
@@ -2901,7 +2901,7 @@
 					<div class="titBox">
 						<p>- 최대 2만 건까지 등록할 수 있습니다.</p>
 						<p>- [엑셀 불러오기]시 문서의 A, B, C, D열을 불러옵니다.(지원하는 파일 형식 : xls, xlsx)</p>
-						<p>- 이름 : 20byte, [*1*] [*2*] : 40byte까지 입력 가능합니다.</p>
+						<p>- 이름 : 20byte, [*1*]~[*4*] : 40byte까지 입력 가능합니다.</p>
 						<p>- 휴대폰 항목은 숫자, 하이픈(-)만 인식하며, 번호 앞에 0이 생략되어도 정상 등록됩니다.
 						</p>
 						<%-- <button type="button" class="excel_btn" onclick="location.href='/cmm/fms/FileDown.do?atchFileId=FILE_000000000011651&fileSn=1'"><i></i>샘플파일 다운로드</button> --%>
Add a comment
List