알림톡 전송 엑셀 불러오기 POI 방식 전환

This commit is contained in:
rosewiper 2024-08-29 15:51:19 +09:00
parent 351ad9202c
commit 1aebdb9a08
3 changed files with 78 additions and 25 deletions

View File

@ -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<HashMap<String, String>> json = new ArrayList<HashMap<String, String>>();
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);

View File

@ -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) {
<div class="attachedFile">
<label for="" class="attachedFile_label">첨부파일</label>
<input type="text" id="excelNm01" value="" readonly>
<input type="file" id="excelFile01" accept=".xls, .xlsx" onchange="excelExport01(event); return false;" style="display:none"/>
<input type="file" id="excelFile01" accept=".xls, .xlsx" onchange="excelExportAjax(event); return false;" style="display:none"/>
<!-- <input type="file" id="excelFile01" accept=".xls, .xlsx" onchange="excelExport01(event); return false;" style="display:none"/> -->
<button type="button" class="btnType btnType6 c1">찾아보기</button>
<!-- <p><span class="vMiddle">*</span> 첨부된 파일은 <span class="c_e40000">[추가]버튼을 클릭</span>하셔야 받는 사람에 등록됩니다.</p> -->
@ -1743,7 +1746,7 @@ function checkNumber(event) {
</div>
</div><!--// 엑셀파일 불러오기 -->
<div class="popup_btn_wrap2">
<button type="button" class="tooltip-close" data-focus="popup02-close" data-focus-next="popup02" onclick="excelAdd()">추가</button>
<button type="button" class="tooltip-close" data-focus="popup02-close" data-focus-next="popup02" onclick="excelAddAjax()">추가</button>
<!-- <button type="button" class="tooltip-close" data-focus="popup02-close" data-focus-next="popup02" onclick="excelAdd()">추가</button> -->
<button type="button" class="tooltip-close" data-focus="popup02-close" data-focus-next="popup02">닫기</button>
</div>

View File

@ -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 = '<div class="list_table list_body excelBody">'
+'\t<div class="cb_wrap">'
+'\t\t<label for="" class="label"></label>'
+'\t\t<input type="checkbox" class="wrap01C">'
+'\t</div>'
+'\t<div class="list_table_num phoneArea">'
+'\t\t<p>$PHONE$</p>'
+'\t</div>'
/*23.04.06 이름제거 요청으로인한 화면 이름 제거*/
/*+'\t<div class="list_table_name">'
+'\t\t<p>$NAME$</p>'
+'\t</div>'*/
+'</div>';
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();
}