From 1aebdb9a080dfb490814649d36b8a2397cdf6520 Mon Sep 17 00:00:00 2001 From: rosewiper Date: Thu, 29 Aug 2024 15:51:19 +0900 Subject: [PATCH] =?UTF-8?q?=EC=95=8C=EB=A6=BC=ED=86=A1=20=EC=A0=84?= =?UTF-8?q?=EC=86=A1=20=EC=97=91=EC=85=80=20=EB=B6=88=EB=9F=AC=EC=98=A4?= =?UTF-8?q?=EA=B8=B0=20POI=20=EB=B0=A9=EC=8B=9D=20=EC=A0=84=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/KakaoAlimTalkSendController.java | 50 ++++++++++++++----- .../msgdata/at/KakaoAlimtalkMsgDataView.jsp | 7 ++- src/main/webapp/js/kakao/at/alimtalkExcel.js | 46 +++++++++++++---- 3 files changed, 78 insertions(+), 25 deletions(-) diff --git a/src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java b/src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java index 998feea0..112758f1 100644 --- a/src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java +++ b/src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java @@ -218,7 +218,9 @@ public class KakaoAlimTalkSendController { /* - * 엑셀 파일 처리 + * 20240829 신규 추가 우영두 + * 기존 Script에서 처리하던 방식 변경 + * 카카오 알림톡 엑셀 불러오기 엑셀 처리 * * */ @RequestMapping(value = "/web/mjon/alimtalk/sendAlimtalkExelFilePhoneNumAjax.do") @@ -255,7 +257,7 @@ public class KakaoAlimTalkSendController { String errPhoneLine = ""; int errPhoneCnt = 0; - //String phoneRegExp = "^01(?:0|1|[6-9])[.-]?(\\d{3}|\\d{4})[.-]?(\\d{4})$"; + //수신번호 유효성 체크 String phoneRegExp = "^(050[2345678]{1}|01[016789]{1})-?[0-9]{3,4}-?[0-9]{4}$"; if(Ext.equals("xls")) { @@ -270,6 +272,7 @@ public class KakaoAlimTalkSendController { return jr; }*/ + List> json = new ArrayList>(); for(int i=2; i< sheet.getLastRowNum() + 2; i++){ //먼저 밸리데이션 체크(1줄은 생략) HSSFRow row = sheet.getRow(i); //열읽기 if(null == row) { @@ -301,12 +304,43 @@ public class KakaoAlimTalkSendController { } cellValue = StringUtil.getString(cell.getStringCellValue().trim()) ; - System.out.println("cellValue ::: "+cellValue); + if(cellValue.matches(phoneRegExp) && errSts) { + jm.put("phone", cellValue); + }else { + errPhoneCnt++; + errPhoneLine += (i+1) + "행 "; + errSts = false; + break; + } } + } + + if(null != jm.get("phone") && errSts) { + json.add(jm); } } + int resultErrCnt = errPhoneCnt; + + jr.setData(json); + jr.setSuccess(true); + + if(resultErrCnt > 0) { + if (errPhoneCnt <= 10) { + if (StringUtils.isNotEmpty(errPhoneLine.trim())) { + errPhoneLine = "[" + errPhoneLine.trim() + "]"; + } + } + else { + errPhoneLine = ""; + } + + jr.setMessage("유효하지 않은 형식의 전화번호 "+ errPhoneCnt +"건" + errPhoneLine.trim() + " 있습니다.\n해당 건을 제외하고 문자 발송됩니다."); + }else { + jr.setMessage(""); + } + }else {//xlsx 확장자 처리 OPCPackage opcPackage = OPCPackage.open(files.get(0).getInputStream()); @@ -333,9 +367,6 @@ public class KakaoAlimTalkSendController { } - System.out.println("+++++++++++++++++ totRowDataCnt ::: "+totRowDataCnt); - - //if(sheet.getLastRowNum() > 20000) { // /*if(totRowDataCnt > 500) { // errMessage = "500건 이상의 업로드는 데이터 부하로 업로드 할수 없습니다."; jr.setSuccess(false); @@ -381,8 +412,6 @@ public class KakaoAlimTalkSendController { if(j == 0) { - System.out.println("cellValue ::: "+cellValue); - if(cellValue.matches(phoneRegExp) && errSts) { jm.put("phone", cellValue); }else { @@ -422,16 +451,11 @@ public class KakaoAlimTalkSendController { jr.setMessage(""); } - } - } } - //jr.setMessage("엑셀 불러오기가 완료 되었습니다."); - //jr.setSuccess(true); - } catch (Exception e) { // TODO: handle exception System.out.println("+++++++++++++++++ sendAlimtalkExelFilePhoneNumAjax Controller Error !!! "+e); diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/at/KakaoAlimtalkMsgDataView.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/at/KakaoAlimtalkMsgDataView.jsp index b97d1372..10250746 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/at/KakaoAlimtalkMsgDataView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/at/KakaoAlimtalkMsgDataView.jsp @@ -284,11 +284,14 @@ function fn_viewDataInit01(){ /** * 먼저 불러온 DATA가 있으면 삭제 * !! 화면에 보이는 data만 삭제 !! + * 총건수, 중복건수 데이터 0으로 초기화 * 엑셀 불러오기 데이터 */ function fn_viewDataInit02(){ $('.excelBody').remove(); $('#excelHead').empty(); + $('#rowTotCnt').text("0"); + $('#rowDupCnt').text("0"); } /* @@ -1735,7 +1738,7 @@ function checkNumber(event) {
- + @@ -1743,7 +1746,7 @@ function checkNumber(event) {
diff --git a/src/main/webapp/js/kakao/at/alimtalkExcel.js b/src/main/webapp/js/kakao/at/alimtalkExcel.js index 34794030..af8ad88f 100644 --- a/src/main/webapp/js/kakao/at/alimtalkExcel.js +++ b/src/main/webapp/js/kakao/at/alimtalkExcel.js @@ -53,20 +53,15 @@ function excelAdd(){ * 기존 json 처리가 아닌 POI 방식으로 처리하기 위함 * * */ - -function excelExport00(){ +function excelExportAjax(){ var data = new FormData(document.excelToolTipForm); - //data.append("file0", $('#excelFile01').prop('files')[0]); var fileValue = $("#excelFile01").val().split("\\"); var fileName = fileValue[fileValue.length-1]; var fileExt = fileName.split('.').pop().toLowerCase(); - console.log("fileName ::: "+fileName); - console.log("fileExt ::: "+fileExt); - if(fileExt.length > 0){ if($.inArray(fileExt, ['xls','xlsx']) == -1) { @@ -81,7 +76,7 @@ function excelExport00(){ } -function excelAdd1(){ +function excelAddAjax(){ var data = new FormData(document.excelToolTipForm); data.append("file0", $('#excelFile01').prop('files')[0]); @@ -113,11 +108,37 @@ function excelAdd1(){ if(data != null){ - /*$.each(data, function(i, item){ + //수신목록 Html 태그 + var addHtml = '
' + +'\t
' + +'\t\t' + +'\t\t' + +'\t
' + +'\t
' + +'\t\t

$PHONE$

' + +'\t
' + /*23.04.06 이름제거 요청으로인한 화면 이름 제거*/ + /*+'\t
' + +'\t\t

$NAME$

' + +'\t
'*/ + +'
'; + + var totalDuplCnt = $('#rowDupCnt').text();//중복 건수 정보 + var $excelBody = $('#wrap01_body'); + var phoneNum; + + $.each(data, function(i, item){ if(checkHpNum(item.phone)){ - excelAddr.push({phone: item.phone, name: item.name, rep1: item.replace1, rep2: item.replace2, rep3: item.replace3, rep4: item.replace4}); + phoneNum = removeDash(item.phone); + + if(!phoneDupl(phoneNum)) + /*23.04.06 이름제거 요청으로인한 화면 이름 제거*/ +// $excelBody.append(addHtml.replace('$PHONE$', phoneNum).replace('$NAME$', jsonData[bodyIndex]['이름'] ??= '')); + $excelBody.append(addHtml.replace('$PHONE$', phoneNum)); + else + totalDuplCnt++; } else{ @@ -130,7 +151,12 @@ function excelAdd1(){ } - });*/ + }); + + $('#rowDupCnt').text(totalDuplCnt); + $("#excelFile01").val(""); //첨부파일 input 초기화 + $("#excelNm01").val(""); // 첨부파일 명 초기화 + updateTotCnt(); }