diff --git a/src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java b/src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java index 6bc36bf2..8e9e44bd 100644 --- a/src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java +++ b/src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java @@ -24,6 +24,7 @@ import javax.annotation.Resource; 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 @@ public class MjonMsgDataController { int errRep2Cnt = 0; int errRep3Cnt = 0; int errRep4Cnt = 0; + String errPhoneLine = ""; + String errEtcLine = ""; //엑셀 확장자에 따른 처리 로직 분리 if(Ext.equals("xls")) { @@ -4503,6 +4506,7 @@ public class MjonMsgDataController { jm.put("name", cellValue); }else { errNameCnt++; + errEtcLine += (i+1) + "행(이름) "; errSts = false; break; } @@ -4514,6 +4518,7 @@ public class MjonMsgDataController { jm.put("phone", cellValue); }else { errPhoneCnt++; + errPhoneLine += (i+1) + "행 "; errSts = false; break; } @@ -4526,6 +4531,7 @@ public class MjonMsgDataController { jm.put("replace1", cellValue); }else { errRep1Cnt++; + errEtcLine += (i+1) + "행(치환1) "; errSts = false; break; } @@ -4538,6 +4544,7 @@ public class MjonMsgDataController { jm.put("replace2", cellValue); }else { errRep2Cnt++; + errEtcLine += (i+1) + "행(치환2) "; errSts = false; break; } @@ -4551,6 +4558,7 @@ public class MjonMsgDataController { jm.put("replace3", cellValue); }else { errRep3Cnt++; + errEtcLine += (i+1) + "행(치환3) "; errSts = false; break; } @@ -4564,6 +4572,7 @@ public class MjonMsgDataController { jm.put("replace4", cellValue); }else { errRep4Cnt++; + errEtcLine += (i+1) + "행(치환4) "; errSts = false; break; } @@ -4578,13 +4587,29 @@ public class MjonMsgDataController { } 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 @@ public class MjonMsgDataController { jm.put("name", cellValue); }else { errNameCnt++; + errEtcLine += (i+1) + "행(이름) "; errSts = false; break; } @@ -4682,6 +4708,7 @@ public class MjonMsgDataController { jm.put("phone", cellValue); }else { errPhoneCnt++; + errPhoneLine += (i+1) + "행 "; errSts = false; break; } @@ -4694,6 +4721,7 @@ public class MjonMsgDataController { jm.put("replace1", cellValue); }else { errRep1Cnt++; + errEtcLine += (i+1) + "행(치환1) "; errSts = false; break; } @@ -4707,6 +4735,7 @@ public class MjonMsgDataController { jm.put("replace2", cellValue); }else { errRep2Cnt++; + errEtcLine += (i+1) + "행(치환2) "; errSts = false; break; } @@ -4720,6 +4749,7 @@ public class MjonMsgDataController { jm.put("replace3", cellValue); }else { errRep3Cnt++; + errEtcLine += (i+1) + "행(치환3) "; errSts = false; break; } @@ -4733,6 +4763,7 @@ public class MjonMsgDataController { jm.put("replace4", cellValue); }else { errRep4Cnt++; + errEtcLine += (i+1) + "행(치환4) "; errSts = false; break; } @@ -4748,13 +4779,29 @@ public class MjonMsgDataController { } 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 @@ public class MjonMsgDataController { 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; diff --git a/src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataSMLView.jsp b/src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataSMLView.jsp index 1ac03a9c..bd4c7359 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataSMLView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataSMLView.jsp @@ -130,11 +130,11 @@ function excelExport(event){ 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 @@ $(".btn_event_cash").off().on("click", function(){
- 최대 2만 건까지 등록할 수 있습니다.
- [엑셀 불러오기]시 문서의 A, B, C, D열을 불러옵니다.(지원하는 파일 형식 : xls, xlsx)
-- 이름 : 20byte, [*1*] [*2*] : 40byte까지 입력 가능합니다.
+- 이름 : 20byte, [*1*]~[*4*] : 40byte까지 입력 가능합니다.
- 휴대폰 항목은 숫자, 하이픈(-)만 인식하며, 번호 앞에 0이 생략되어도 정상 등록됩니다.
<%-- --%> diff --git a/src/main/webapp/WEB-INF/jsp/web/msgcampain/excel/MsgExcelDataSMLView.jsp b/src/main/webapp/WEB-INF/jsp/web/msgcampain/excel/MsgExcelDataSMLView.jsp index 31f05005..9add99e4 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgcampain/excel/MsgExcelDataSMLView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgcampain/excel/MsgExcelDataSMLView.jsp @@ -3010,7 +3010,7 @@ $(".btn_event_cash").off().on("click", function(){- 최대 2만 건까지 등록할 수 있습니다.
- [엑셀 불러오기]시 문서의 A, B, C, D열을 불러옵니다.(지원하는 파일 형식 : xls, xlsx)
-- 이름 : 20byte, [*1*] [*2*] : 40byte까지 입력 가능합니다.
+- 이름 : 20byte, [*1*]~[*4*] : 40byte까지 입력 가능합니다.
- 휴대폰 항목은 숫자, 하이픈(-)만 인식하며, 번호 앞에 0이 생략되어도 정상 등록됩니다.
<%-- --%> diff --git a/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp b/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp index d4b25b79..e3fb4dd0 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp @@ -3250,7 +3250,7 @@ $(".btn_event_cash").off().on("click", function(){- 최대 2만 건까지 등록할 수 있습니다.
- [엑셀 불러오기]시 문서의 A, B, C, D열을 불러옵니다.(지원하는 파일 형식 : xls, xlsx)
-- 이름 : 20byte, [*1*] [*2*] : 40byte까지 입력 가능합니다.
+- 이름 : 20byte, [*1*]~[*4*] : 40byte까지 입력 가능합니다.
- 휴대폰 항목은 숫자, 하이픈(-)만 인식하며, 번호 앞에 0이 생략되어도 정상 등록됩니다.
diff --git a/src/main/webapp/WEB-INF/jsp/web/msgdata/excel/MsgExcelDataSMLView.jsp b/src/main/webapp/WEB-INF/jsp/web/msgdata/excel/MsgExcelDataSMLView.jsp index 34dd5aec..285e7453 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgdata/excel/MsgExcelDataSMLView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgdata/excel/MsgExcelDataSMLView.jsp @@ -2901,7 +2901,7 @@ $(".btn_event_cash").off().on("click", function(){- 최대 2만 건까지 등록할 수 있습니다.
- [엑셀 불러오기]시 문서의 A, B, C, D열을 불러옵니다.(지원하는 파일 형식 : xls, xlsx)
-- 이름 : 20byte, [*1*] [*2*] : 40byte까지 입력 가능합니다.
+- 이름 : 20byte, [*1*]~[*4*] : 40byte까지 입력 가능합니다.
- 휴대폰 항목은 숫자, 하이픈(-)만 인식하며, 번호 앞에 0이 생략되어도 정상 등록됩니다.
<%-- --%>