엑셀불러오기 이름, 치환1~4 바이트수계산 로직 수정
@6f2ba5915978fb861f4483d552630857872caaf6
--- src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java
+++ src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java
... | ... | @@ -24,6 +24,7 @@ |
| 24 | 24 |
import javax.servlet.http.HttpServletRequest; |
| 25 | 25 |
import javax.servlet.http.HttpServletResponse; |
| 26 | 26 |
|
| 27 |
+import org.apache.commons.lang3.StringUtils; |
|
| 27 | 28 |
import org.apache.poi.hssf.usermodel.HSSFCell; |
| 28 | 29 |
import org.apache.poi.hssf.usermodel.HSSFRow; |
| 29 | 30 |
import org.apache.poi.hssf.usermodel.HSSFSheet; |
... | ... | @@ -4445,6 +4446,8 @@ |
| 4445 | 4446 |
int errRep2Cnt = 0; |
| 4446 | 4447 |
int errRep3Cnt = 0; |
| 4447 | 4448 |
int errRep4Cnt = 0; |
| 4449 |
+ String errPhoneLine = ""; |
|
| 4450 |
+ String errEtcLine = ""; |
|
| 4448 | 4451 |
|
| 4449 | 4452 |
//엑셀 확장자에 따른 처리 로직 분리 |
| 4450 | 4453 |
if(Ext.equals("xls")) {
|
... | ... | @@ -4503,6 +4506,7 @@ |
| 4503 | 4506 |
jm.put("name", cellValue);
|
| 4504 | 4507 |
}else {
|
| 4505 | 4508 |
errNameCnt++; |
| 4509 |
+ errEtcLine += (i+1) + "행(이름) "; |
|
| 4506 | 4510 |
errSts = false; |
| 4507 | 4511 |
break; |
| 4508 | 4512 |
} |
... | ... | @@ -4514,6 +4518,7 @@ |
| 4514 | 4518 |
jm.put("phone", cellValue);
|
| 4515 | 4519 |
}else {
|
| 4516 | 4520 |
errPhoneCnt++; |
| 4521 |
+ errPhoneLine += (i+1) + "행 "; |
|
| 4517 | 4522 |
errSts = false; |
| 4518 | 4523 |
break; |
| 4519 | 4524 |
} |
... | ... | @@ -4526,6 +4531,7 @@ |
| 4526 | 4531 |
jm.put("replace1", cellValue);
|
| 4527 | 4532 |
}else {
|
| 4528 | 4533 |
errRep1Cnt++; |
| 4534 |
+ errEtcLine += (i+1) + "행(치환1) "; |
|
| 4529 | 4535 |
errSts = false; |
| 4530 | 4536 |
break; |
| 4531 | 4537 |
} |
... | ... | @@ -4538,6 +4544,7 @@ |
| 4538 | 4544 |
jm.put("replace2", cellValue);
|
| 4539 | 4545 |
}else {
|
| 4540 | 4546 |
errRep2Cnt++; |
| 4547 |
+ errEtcLine += (i+1) + "행(치환2) "; |
|
| 4541 | 4548 |
errSts = false; |
| 4542 | 4549 |
break; |
| 4543 | 4550 |
} |
... | ... | @@ -4551,6 +4558,7 @@ |
| 4551 | 4558 |
jm.put("replace3", cellValue);
|
| 4552 | 4559 |
}else {
|
| 4553 | 4560 |
errRep3Cnt++; |
| 4561 |
+ errEtcLine += (i+1) + "행(치환3) "; |
|
| 4554 | 4562 |
errSts = false; |
| 4555 | 4563 |
break; |
| 4556 | 4564 |
} |
... | ... | @@ -4564,6 +4572,7 @@ |
| 4564 | 4572 |
jm.put("replace4", cellValue);
|
| 4565 | 4573 |
}else {
|
| 4566 | 4574 |
errRep4Cnt++; |
| 4575 |
+ errEtcLine += (i+1) + "행(치환4) "; |
|
| 4567 | 4576 |
errSts = false; |
| 4568 | 4577 |
break; |
| 4569 | 4578 |
} |
... | ... | @@ -4578,13 +4587,29 @@ |
| 4578 | 4587 |
} |
| 4579 | 4588 |
|
| 4580 | 4589 |
int resultErrCnt = errPhoneCnt + errNameCnt + errRep1Cnt + errRep2Cnt + errRep3Cnt + errRep4Cnt; |
| 4581 |
- int resultErrCntExceptPhone = errPhoneCnt + errNameCnt + errRep1Cnt + errRep2Cnt + errRep3Cnt + errRep4Cnt; |
|
| 4590 |
+ int resultErrCntExceptPhone = errNameCnt + errRep1Cnt + errRep2Cnt + errRep3Cnt + errRep4Cnt; |
|
| 4582 | 4591 |
|
| 4583 | 4592 |
jr.setData(json); |
| 4584 | 4593 |
jr.setSuccess(true); |
| 4585 | 4594 |
|
| 4586 | 4595 |
if(resultErrCnt > 0) {
|
| 4587 |
- jr.setMessage("유효하지 않은 형식의 전화번호 "+ errPhoneCnt +"건,\n이름 : 20byte, [*1*] [*2*] : 40byte 제한글자수 초과 "+ resultErrCntExceptPhone +"건 있습니다.\n해당 건을 제외하고 문자 발송됩니다.");
|
|
| 4596 |
+ if (errPhoneCnt <= 10) {
|
|
| 4597 |
+ if (StringUtils.isNotEmpty(errPhoneLine.trim())) {
|
|
| 4598 |
+ errPhoneLine = "[" + errPhoneLine.trim() + "]"; |
|
| 4599 |
+ } |
|
| 4600 |
+ } |
|
| 4601 |
+ else {
|
|
| 4602 |
+ errPhoneLine = ""; |
|
| 4603 |
+ } |
|
| 4604 |
+ if (resultErrCntExceptPhone <= 10) {
|
|
| 4605 |
+ if (StringUtils.isNotEmpty(errEtcLine.trim())) {
|
|
| 4606 |
+ errEtcLine = "[" + errEtcLine.trim() + "]"; |
|
| 4607 |
+ } |
|
| 4608 |
+ } |
|
| 4609 |
+ else {
|
|
| 4610 |
+ errEtcLine = ""; |
|
| 4611 |
+ } |
|
| 4612 |
+ jr.setMessage("유효하지 않은 형식의 전화번호 "+ errPhoneCnt +"건" + errPhoneLine.trim() + "\n이름 : 20byte, [*1*]~[*4*] : 40byte 제한글자수 초과 "+ resultErrCntExceptPhone +"건" + errEtcLine.trim() + " 있습니다.\n해당 건을 제외하고 문자 발송됩니다.");
|
|
| 4588 | 4613 |
}else {
|
| 4589 | 4614 |
jr.setMessage("");
|
| 4590 | 4615 |
} |
... | ... | @@ -4670,6 +4695,7 @@ |
| 4670 | 4695 |
jm.put("name", cellValue);
|
| 4671 | 4696 |
}else {
|
| 4672 | 4697 |
errNameCnt++; |
| 4698 |
+ errEtcLine += (i+1) + "행(이름) "; |
|
| 4673 | 4699 |
errSts = false; |
| 4674 | 4700 |
break; |
| 4675 | 4701 |
} |
... | ... | @@ -4682,6 +4708,7 @@ |
| 4682 | 4708 |
jm.put("phone", cellValue);
|
| 4683 | 4709 |
}else {
|
| 4684 | 4710 |
errPhoneCnt++; |
| 4711 |
+ errPhoneLine += (i+1) + "행 "; |
|
| 4685 | 4712 |
errSts = false; |
| 4686 | 4713 |
break; |
| 4687 | 4714 |
} |
... | ... | @@ -4694,6 +4721,7 @@ |
| 4694 | 4721 |
jm.put("replace1", cellValue);
|
| 4695 | 4722 |
}else {
|
| 4696 | 4723 |
errRep1Cnt++; |
| 4724 |
+ errEtcLine += (i+1) + "행(치환1) "; |
|
| 4697 | 4725 |
errSts = false; |
| 4698 | 4726 |
break; |
| 4699 | 4727 |
} |
... | ... | @@ -4707,6 +4735,7 @@ |
| 4707 | 4735 |
jm.put("replace2", cellValue);
|
| 4708 | 4736 |
}else {
|
| 4709 | 4737 |
errRep2Cnt++; |
| 4738 |
+ errEtcLine += (i+1) + "행(치환2) "; |
|
| 4710 | 4739 |
errSts = false; |
| 4711 | 4740 |
break; |
| 4712 | 4741 |
} |
... | ... | @@ -4720,6 +4749,7 @@ |
| 4720 | 4749 |
jm.put("replace3", cellValue);
|
| 4721 | 4750 |
}else {
|
| 4722 | 4751 |
errRep3Cnt++; |
| 4752 |
+ errEtcLine += (i+1) + "행(치환3) "; |
|
| 4723 | 4753 |
errSts = false; |
| 4724 | 4754 |
break; |
| 4725 | 4755 |
} |
... | ... | @@ -4733,6 +4763,7 @@ |
| 4733 | 4763 |
jm.put("replace4", cellValue);
|
| 4734 | 4764 |
}else {
|
| 4735 | 4765 |
errRep4Cnt++; |
| 4766 |
+ errEtcLine += (i+1) + "행(치환4) "; |
|
| 4736 | 4767 |
errSts = false; |
| 4737 | 4768 |
break; |
| 4738 | 4769 |
} |
... | ... | @@ -4748,13 +4779,29 @@ |
| 4748 | 4779 |
} |
| 4749 | 4780 |
|
| 4750 | 4781 |
int resultErrCnt = errPhoneCnt + errNameCnt + errRep1Cnt + errRep2Cnt + errRep3Cnt + errRep4Cnt; |
| 4751 |
- int resultErrCntExceptPhone = errPhoneCnt + errNameCnt + errRep1Cnt + errRep2Cnt + errRep3Cnt + errRep4Cnt; |
|
| 4782 |
+ int resultErrCntExceptPhone = errNameCnt + errRep1Cnt + errRep2Cnt + errRep3Cnt + errRep4Cnt; |
|
| 4752 | 4783 |
|
| 4753 | 4784 |
jr.setData(json); |
| 4754 | 4785 |
jr.setSuccess(true); |
| 4755 | 4786 |
|
| 4756 | 4787 |
if(resultErrCnt > 0) {
|
| 4757 |
- jr.setMessage("유효하지 않은 형식의 전화번호 "+ errPhoneCnt +"건,\n이름 : 20byte, [*1*] [*2*] : 40byte 제한글자수 초과 "+ resultErrCntExceptPhone +"건 있습니다.\n해당 건을 제외하고 문자 발송됩니다.");
|
|
| 4788 |
+ if (errPhoneCnt <= 10) {
|
|
| 4789 |
+ if (StringUtils.isNotEmpty(errPhoneLine.trim())) {
|
|
| 4790 |
+ errPhoneLine = "[" + errPhoneLine.trim() + "]"; |
|
| 4791 |
+ } |
|
| 4792 |
+ } |
|
| 4793 |
+ else {
|
|
| 4794 |
+ errPhoneLine = ""; |
|
| 4795 |
+ } |
|
| 4796 |
+ if (resultErrCntExceptPhone <= 10) {
|
|
| 4797 |
+ if (StringUtils.isNotEmpty(errEtcLine.trim())) {
|
|
| 4798 |
+ errEtcLine = "[" + errEtcLine.trim() + "]"; |
|
| 4799 |
+ } |
|
| 4800 |
+ } |
|
| 4801 |
+ else {
|
|
| 4802 |
+ errEtcLine = ""; |
|
| 4803 |
+ } |
|
| 4804 |
+ jr.setMessage("유효하지 않은 형식의 전화번호 "+ errPhoneCnt +"건" + errPhoneLine.trim() + "\n이름 : 20byte, [*1*]~[*4*] : 40byte 제한글자수 초과 "+ resultErrCntExceptPhone +"건" + errEtcLine.trim() + " 있습니다.\n해당 건을 제외하고 문자 발송됩니다.");
|
|
| 4758 | 4805 |
}else {
|
| 4759 | 4806 |
jr.setMessage("");
|
| 4760 | 4807 |
} |
... | ... | @@ -5782,32 +5829,28 @@ |
| 5782 | 5829 |
return modelAndView; |
| 5783 | 5830 |
} |
| 5784 | 5831 |
|
| 5832 |
+ // 치환문자 바이트수 체크 |
|
| 5785 | 5833 |
public boolean getNameRepLenChk(String type, String value) {
|
| 5786 |
- |
|
| 5834 |
+ String charset = "euc-kr"; |
|
| 5787 | 5835 |
boolean rtnValue = true; |
| 5788 | 5836 |
|
| 5789 |
- if(type.equals("name")) {
|
|
| 5790 |
- |
|
| 5791 |
- String tmpNm = value; |
|
| 5792 |
- int nmLen = tmpNm.length(); |
|
| 5793 |
- |
|
| 5794 |
- if(nmLen > 12) {
|
|
| 5795 |
- |
|
| 5796 |
- rtnValue = false; |
|
| 5797 |
- |
|
| 5837 |
+ try {
|
|
| 5838 |
+ if(type.equals("name")) {
|
|
| 5839 |
+ String tmpNm = value; |
|
| 5840 |
+ int nmLen = tmpNm.getBytes(charset).length; |
|
| 5841 |
+ if(nmLen >= 20) {
|
|
| 5842 |
+ rtnValue = false; |
|
| 5843 |
+ } |
|
| 5844 |
+ }else if(type.equals("rep")) {
|
|
| 5845 |
+ String tmpRep = value; |
|
| 5846 |
+ int repLen = tmpRep.getBytes(charset).length; |
|
| 5847 |
+ if(repLen >= 40) {
|
|
| 5848 |
+ rtnValue = false; |
|
| 5849 |
+ } |
|
| 5798 | 5850 |
} |
| 5799 |
- |
|
| 5800 |
- }else if(type.equals("rep")) {
|
|
| 5801 |
- |
|
| 5802 |
- String tmpRep = value; |
|
| 5803 |
- int repLen = tmpRep.length(); |
|
| 5804 |
- |
|
| 5805 |
- if(repLen > 20) {
|
|
| 5806 |
- |
|
| 5807 |
- rtnValue = false; |
|
| 5808 |
- |
|
| 5809 |
- } |
|
| 5810 |
- |
|
| 5851 |
+ } |
|
| 5852 |
+ catch(Exception e) {
|
|
| 5853 |
+ rtnValue = false; |
|
| 5811 | 5854 |
} |
| 5812 | 5855 |
|
| 5813 | 5856 |
return rtnValue; |
--- src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataSMLView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataSMLView.jsp
... | ... | @@ -130,11 +130,11 @@ |
| 130 | 130 |
|
| 131 | 131 |
if(fileExt == "xls" || fileExt == "xlsx"){
|
| 132 | 132 |
|
| 133 |
- url = "/web/mjon/msgcampain/sendExelFilePhoneNumAjax.do"; |
|
| 133 |
+ url = "/web/mjon/msgdata/sendExelFilePhoneNumAjax.do"; |
|
| 134 | 134 |
|
| 135 | 135 |
}else if(fileExt = "txt"){
|
| 136 | 136 |
|
| 137 |
- url = "/web/mjon/msgcampain/sendTxtFilePhoneNumAjax.do"; |
|
| 137 |
+ url = "/web/mjon/msgdata/sendTxtFilePhoneNumAjax.do"; |
|
| 138 | 138 |
|
| 139 | 139 |
}else{
|
| 140 | 140 |
|
... | ... | @@ -3368,7 +3368,7 @@ |
| 3368 | 3368 |
<div class="titBox"> |
| 3369 | 3369 |
<p>- 최대 2만 건까지 등록할 수 있습니다.</p> |
| 3370 | 3370 |
<p>- [엑셀 불러오기]시 문서의 A, B, C, D열을 불러옵니다.(지원하는 파일 형식 : xls, xlsx)</p> |
| 3371 |
- <p>- 이름 : 20byte, [*1*] [*2*] : 40byte까지 입력 가능합니다.</p> |
|
| 3371 |
+ <p>- 이름 : 20byte, [*1*]~[*4*] : 40byte까지 입력 가능합니다.</p> |
|
| 3372 | 3372 |
<p>- 휴대폰 항목은 숫자, 하이픈(-)만 인식하며, 번호 앞에 0이 생략되어도 정상 등록됩니다. |
| 3373 | 3373 |
</p> |
| 3374 | 3374 |
<%-- <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
... | ... | @@ -3010,7 +3010,7 @@ |
| 3010 | 3010 |
<div class="titBox"> |
| 3011 | 3011 |
<p>- 최대 2만 건까지 등록할 수 있습니다.</p> |
| 3012 | 3012 |
<p>- [엑셀 불러오기]시 문서의 A, B, C, D열을 불러옵니다.(지원하는 파일 형식 : xls, xlsx)</p> |
| 3013 |
- <p>- 이름 : 20byte, [*1*] [*2*] : 40byte까지 입력 가능합니다.</p> |
|
| 3013 |
+ <p>- 이름 : 20byte, [*1*]~[*4*] : 40byte까지 입력 가능합니다.</p> |
|
| 3014 | 3014 |
<p>- 휴대폰 항목은 숫자, 하이픈(-)만 인식하며, 번호 앞에 0이 생략되어도 정상 등록됩니다. |
| 3015 | 3015 |
</p> |
| 3016 | 3016 |
<%-- <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
... | ... | @@ -3250,7 +3250,7 @@ |
| 3250 | 3250 |
<div class="titBox"> |
| 3251 | 3251 |
<p>- 최대 2만 건까지 등록할 수 있습니다.</p> |
| 3252 | 3252 |
<p>- [엑셀 불러오기]시 문서의 A, B, C, D열을 불러옵니다.(지원하는 파일 형식 : xls, xlsx)</p> |
| 3253 |
- <p>- 이름 : 20byte, [*1*] [*2*] : 40byte까지 입력 가능합니다.</p> |
|
| 3253 |
+ <p>- 이름 : 20byte, [*1*]~[*4*] : 40byte까지 입력 가능합니다.</p> |
|
| 3254 | 3254 |
<p>- 휴대폰 항목은 숫자, 하이픈(-)만 인식하며, 번호 앞에 0이 생략되어도 정상 등록됩니다. |
| 3255 | 3255 |
</p> |
| 3256 | 3256 |
<!-- <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
... | ... | @@ -2901,7 +2901,7 @@ |
| 2901 | 2901 |
<div class="titBox"> |
| 2902 | 2902 |
<p>- 최대 2만 건까지 등록할 수 있습니다.</p> |
| 2903 | 2903 |
<p>- [엑셀 불러오기]시 문서의 A, B, C, D열을 불러옵니다.(지원하는 파일 형식 : xls, xlsx)</p> |
| 2904 |
- <p>- 이름 : 20byte, [*1*] [*2*] : 40byte까지 입력 가능합니다.</p> |
|
| 2904 |
+ <p>- 이름 : 20byte, [*1*]~[*4*] : 40byte까지 입력 가능합니다.</p> |
|
| 2905 | 2905 |
<p>- 휴대폰 항목은 숫자, 하이픈(-)만 인식하며, 번호 앞에 0이 생략되어도 정상 등록됩니다. |
| 2906 | 2906 |
</p> |
| 2907 | 2907 |
<%-- <button type="button" class="excel_btn" onclick="location.href='/cmm/fms/FileDown.do?atchFileId=FILE_000000000011651&fileSn=1'"><i></i>샘플파일 다운로드</button> --%> |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?