--- src/main/java/itn/let/fax/addr/service/impl/FaxAddrServiceImpl.java
+++ src/main/java/itn/let/fax/addr/service/impl/FaxAddrServiceImpl.java
... | ... | @@ -26,7 +26,9 @@ |
| 26 | 26 |
import itn.let.fax.addr.service.FaxAddrVO; |
| 27 | 27 |
import itn.let.mail.service.StatusResponse; |
| 28 | 28 |
import itn.let.mjo.addr.service.AddrVO; |
| 29 |
+import lombok.extern.slf4j.Slf4j; |
|
| 29 | 30 |
|
| 31 |
+@Slf4j |
|
| 30 | 32 |
@Service("FaxAddrService")
|
| 31 | 33 |
public class FaxAddrServiceImpl extends EgovAbstractServiceImpl implements FaxAddrService{
|
| 32 | 34 |
|
... | ... | @@ -43,16 +45,14 @@ |
| 43 | 45 |
@Resource(name = "egovAddrTransHistIdGnrService") |
| 44 | 46 |
private EgovIdGnrService idgenAddrTransHistId; |
| 45 | 47 |
|
| 46 |
- |
|
| 47 |
- private static final String FAX_REGEX = "^(0\\d{1,2})-(\\d{3,4})-(\\d{4})$";
|
|
| 48 |
- private static final String FAX_M_REGEX = "^(050\\d{1})-(\\d{3,4})-(\\d{4})$";
|
|
| 48 |
+ |
|
| 49 |
+ private static final String FAX_REGEX = "^(02|0[3-6][1-4]|030|050|060|070|080|1\\d{2})$";
|
|
| 49 | 50 |
private static final Pattern FAX_PATTERN = Pattern.compile(FAX_REGEX); |
| 50 |
- private static final Pattern FAX_M_PATTERN = Pattern.compile(FAX_M_REGEX); |
|
| 51 | 51 |
|
| 52 | 52 |
private static final Charset EUC_KR = Charset.forName("EUC-KR");
|
| 53 | 53 |
|
| 54 |
- private static final int MAX_SINGLE_ENTRY_CNT = 350000; |
|
| 55 |
- private static final int MAX_FAX_ADDR_CNT = 10000000; // 팩스 주소록 등록 최대 수량 |
|
| 54 |
+ private static final int MAX_SINGLE_ENTRY_CNT = 300000; |
|
| 55 |
+ private static final int MAX_FAX_ADDR_CNT = 1000000; // 팩스 주소록 등록 최대 수량 |
|
| 56 | 56 |
|
| 57 | 57 |
public List<FaxAddrVO> selectFaxAddrList(FaxAddrVO addrVO) throws Exception {
|
| 58 | 58 |
return faxAddrDAO.selectFaxAddrList(addrVO); |
... | ... | @@ -385,7 +385,7 @@ |
| 385 | 385 |
if(faxAddrListVO.size() > MAX_SINGLE_ENTRY_CNT) {
|
| 386 | 386 |
return new StatusResponse( |
| 387 | 387 |
HttpStatus.BAD_REQUEST |
| 388 |
- , "주소록은 한번에 100만개까지만 등록이 가능합니다." |
|
| 388 |
+ , "주소록은 한번에 30만개까지만 등록이 가능합니다." |
|
| 389 | 389 |
, LocalDateTime.now() |
| 390 | 390 |
); |
| 391 | 391 |
} |
... | ... | @@ -396,6 +396,8 @@ |
| 396 | 396 |
int faxAddrBefCnt = faxAddrDAO.selectFaxAddrTotalCount(faxAddrListVO.get(0)); |
| 397 | 397 |
int faxAddrNewCnt = faxAddrListVO.size(); //신규 추가할 주소록 갯수 |
| 398 | 398 |
int sumFaxAddrCnt = faxAddrBefCnt + faxAddrNewCnt; |
| 399 |
+ |
|
| 400 |
+ System.out.println("faxAddrListVO.size() : "+ faxAddrListVO.size());
|
|
| 399 | 401 |
|
| 400 | 402 |
// step1-2 총 갯수가 (주소록 갯수 + 신규 주소록)1000만건 체크 |
| 401 | 403 |
if(sumFaxAddrCnt > MAX_FAX_ADDR_CNT) {
|
... | ... | @@ -439,16 +441,12 @@ |
| 439 | 441 |
AtomicInteger invalid = new AtomicInteger(0); // 스레드-안전(thread-safe)하게 정수 값을 업데이트할 수 있는 기능을 제공 |
| 440 | 442 |
faxAddrListVO.removeIf(faxAddr -> {
|
| 441 | 443 |
String phoneNo = faxAddr.getAddrPhoneNo(); |
| 442 |
- |
|
| 444 |
+ log.info(" + phoneNo :: [{}]", phoneNo);
|
|
| 443 | 445 |
if (isValidFaxNumber(phoneNo)) {
|
| 444 | 446 |
faxAddr.setAddrPhoneNo(phoneNo); // 하이픈이 제거된 유효한 번호 설정 |
| 445 | 447 |
trimFieldsBytes(faxAddr); // 다른 필드들에 대한 20바이트 체크 및 자르기 |
| 446 | 448 |
return false; // 유효한 번호는 제거하지 않음 |
| 447 |
- } else if (isValidMFaxNumber(phoneNo)) {
|
|
| 448 |
- faxAddr.setAddrPhoneNo(phoneNo); // 하이픈이 제거된 유효한 번호 설정 |
|
| 449 |
- trimFieldsBytes(faxAddr); // 다른 필드들에 대한 20바이트 체크 및 자르기 |
|
| 450 |
- return false; // 유효한 번호는 제거하지 않음 |
|
| 451 |
- }else{
|
|
| 449 |
+ } else{
|
|
| 452 | 450 |
invalid.getAndIncrement(); // 유효하지 않은 번호 개수 증가 |
| 453 | 451 |
return true; // 유효하지 않은 번호는 제거 |
| 454 | 452 |
} |
... | ... | @@ -465,6 +463,13 @@ |
| 465 | 463 |
if(faxAddrListVO.size() > 0) {
|
| 466 | 464 |
// 등록 |
| 467 | 465 |
faxAddrDAO.insertFaxAddrList(faxAddrListVO); |
| 466 |
+ }else {
|
|
| 467 |
+ |
|
| 468 |
+ return new StatusResponse( |
|
| 469 |
+ HttpStatus.BAD_REQUEST |
|
| 470 |
+ , "오류가 발생하였습니다." |
|
| 471 |
+ , "" |
|
| 472 |
+ ); |
|
| 468 | 473 |
} |
| 469 | 474 |
|
| 470 | 475 |
} catch (Exception e) {
|
... | ... | @@ -494,15 +499,18 @@ |
| 494 | 499 |
System.out.println(formattedDateTime); |
| 495 | 500 |
|
| 496 | 501 |
|
| 502 |
+ System.out.println("faxAddrListVO.size() : "+ faxAddrListVO.size());
|
|
| 503 |
+ |
|
| 504 |
+ |
|
| 497 | 505 |
String message = "저장에 성공했습니다.\n저장 : " + faxAddrListVO.size() + "건" |
| 498 | 506 |
+", INERT 총 시간 : " + executionTime+ "초" |
| 499 | 507 |
+", 현재시간 : " + formattedDateTime; |
| 500 |
- |
|
| 508 |
+ System.out.println("++ message : "+ message);
|
|
| 501 | 509 |
return new StatusResponse( |
| 502 | 510 |
HttpStatus.OK |
| 503 | 511 |
, message |
| 504 | 512 |
, faxAddrListVO.get(0).getAddrGrpId() |
| 505 |
- ); |
|
| 513 |
+ ); |
|
| 506 | 514 |
} |
| 507 | 515 |
|
| 508 | 516 |
@Override |
... | ... | @@ -520,17 +528,12 @@ |
| 520 | 528 |
if (faxNo == null || faxNo.isEmpty()) {
|
| 521 | 529 |
return false; |
| 522 | 530 |
} |
| 523 |
- Matcher matcher = FAX_PATTERN.matcher(faxNo); |
|
| 531 |
+ // 앞 3자리 추출 |
|
| 532 |
+ String subNumber = faxNo.length() >= 3 ? faxNo.substring(0, 3) : faxNo; |
|
| 533 |
+ Matcher matcher = FAX_PATTERN.matcher(subNumber); |
|
| 524 | 534 |
return matcher.matches(); |
| 525 | 535 |
} |
| 526 | 536 |
|
| 527 |
- public static boolean isValidMFaxNumber(String faxNo) {
|
|
| 528 |
- if (faxNo == null || faxNo.isEmpty()) {
|
|
| 529 |
- return false; |
|
| 530 |
- } |
|
| 531 |
- Matcher matcher = FAX_M_PATTERN.matcher(faxNo); |
|
| 532 |
- return matcher.matches(); |
|
| 533 |
- } |
|
| 534 | 537 |
|
| 535 | 538 |
public static void trimFieldsBytes(FaxAddrVO faxAddr) {
|
| 536 | 539 |
faxAddr.setAddrNm(trimToBytes(faxAddr.getAddrNm(), 20)); |
--- src/main/webapp/WEB-INF/jsp/web/fax/addr/FaxAddrList.jsp
+++ src/main/webapp/WEB-INF/jsp/web/fax/addr/FaxAddrList.jsp
... | ... | @@ -226,178 +226,6 @@ |
| 226 | 226 |
} |
| 227 | 227 |
|
| 228 | 228 |
//############################################################################################# |
| 229 |
-//파일업로드 드래그앤 드롭 |
|
| 230 |
-//############################################################################################# |
|
| 231 |
-var objDragAndDrop = $(".upload_area");
|
|
| 232 |
-$(document).on("dragenter",".upload_area",function(e){
|
|
| 233 |
- e.stopPropagation(); |
|
| 234 |
- e.preventDefault(); |
|
| 235 |
- //$(this).css('border', '2px solid #0B85A1');
|
|
| 236 |
-}); |
|
| 237 |
-$(document).on("dragover",".upload_area",function(e){
|
|
| 238 |
- e.stopPropagation(); |
|
| 239 |
- e.preventDefault(); |
|
| 240 |
-}); |
|
| 241 |
-$(document).on("drop",".upload_area",function(e){
|
|
| 242 |
- //$(this).css('border', '2px dotted #0B85A1');
|
|
| 243 |
- e.preventDefault(); |
|
| 244 |
- var files = e.originalEvent.dataTransfer.files; |
|
| 245 |
- handleFileUpload(files,objDragAndDrop); //파일업로드 |
|
| 246 |
-}); |
|
| 247 |
- |
|
| 248 |
-$(document).on('dragenter', function (e){
|
|
| 249 |
- e.stopPropagation(); |
|
| 250 |
- e.preventDefault(); |
|
| 251 |
-}); |
|
| 252 |
-$(document).on('dragover', function (e){
|
|
| 253 |
-e.stopPropagation(); |
|
| 254 |
-e.preventDefault(); |
|
| 255 |
-//objDragAndDrop.css('border', '2px dotted #0B85A1');
|
|
| 256 |
-}); |
|
| 257 |
-$(document).on('drop', function (e){
|
|
| 258 |
- e.stopPropagation(); |
|
| 259 |
- e.preventDefault(); |
|
| 260 |
-}); |
|
| 261 |
-//파일 드래그앤드롭 종료 |
|
| 262 |
- |
|
| 263 |
-function handleFileUpload(files,obj) //업로드 function |
|
| 264 |
-{
|
|
| 265 |
- _fileForm2 = []; //form file data 초기화 |
|
| 266 |
- |
|
| 267 |
- var limitsize = 50*1024*1024; //파일 제한 체크(50개, 50MB) |
|
| 268 |
- var limitcount = 1;//$("input[name=limitcount]").val()*1 ;
|
|
| 269 |
- var fileNece = true; //첨부파일필수 |
|
| 270 |
- |
|
| 271 |
- |
|
| 272 |
- if($('#fileNece').length > 0){
|
|
| 273 |
- if('N'==$('#fileNece').val()){
|
|
| 274 |
- fileNece = false; |
|
| 275 |
- } |
|
| 276 |
- } |
|
| 277 |
- |
|
| 278 |
- //엑셀 및 TXT 파일만 업로드 할수 있도록 체크하기 |
|
| 279 |
- var fileNm = files[0].name; |
|
| 280 |
- fileExt = fileNm.split('.').pop().toLowerCase();
|
|
| 281 |
- |
|
| 282 |
- // IE11 대응 |
|
| 283 |
- if (fileExt != "") {
|
|
| 284 |
- if($.inArray(fileExt, ['txt','xls','xlsx']) == -1) {
|
|
| 285 |
- alert('txt, xls, xlsx 파일만 업로드 할수 있습니다.');
|
|
| 286 |
- return; |
|
| 287 |
- } |
|
| 288 |
- |
|
| 289 |
- for (var i = 0; i < files.length; i++) |
|
| 290 |
- {
|
|
| 291 |
- var fd = new FormData(); |
|
| 292 |
- fd.append('file', files[i]);
|
|
| 293 |
- var tmpObj = new Object(); |
|
| 294 |
- tmpObj.name = "file_" + _fileIdx; |
|
| 295 |
- tmpObj.fileObj = files[i]; |
|
| 296 |
- |
|
| 297 |
- _fileForm2.push(tmpObj); |
|
| 298 |
- sendFileToServer(fd, obj, files[i], _fileIdx); |
|
| 299 |
- _fileIdx++; |
|
| 300 |
- |
|
| 301 |
- var totalfileSize = 0; |
|
| 302 |
- $('.totalfileCount').text($('.item_file_size').length) ;
|
|
| 303 |
- $('.item_file_size').each(function(){
|
|
| 304 |
- totalfileSize += $(this).val()*1 ; |
|
| 305 |
- }); |
|
| 306 |
- $('.totalfileSize').text(getStrFileSize(totalfileSize)) ;
|
|
| 307 |
- } |
|
| 308 |
- } |
|
| 309 |
-} |
|
| 310 |
- |
|
| 311 |
-//드래그앤 드롭 엑셀 및 텍스트 파일 서버 전송 함수 |
|
| 312 |
-function sendFileToServer(formData, obj , fileObj, _fileIdx) |
|
| 313 |
-{
|
|
| 314 |
- var msg; |
|
| 315 |
- msg = "해당 첨부파일을 수정하시겠습니까?"; |
|
| 316 |
- var data = new FormData(document.msgForm); |
|
| 317 |
- _fileForm2.forEach(function(obj, idx) {
|
|
| 318 |
- if (obj) data.append("file0", obj.fileObj);
|
|
| 319 |
- }); |
|
| 320 |
- |
|
| 321 |
- var url = ""; |
|
| 322 |
- |
|
| 323 |
- // IE11 대응 |
|
| 324 |
- if (fileExt != "") {
|
|
| 325 |
- if(fileExt == "xls" || fileExt == "xlsx"){
|
|
| 326 |
- url = "/web/mjon/fax/addr/sendExelFilePhoneNumAjax.do"; |
|
| 327 |
- }else if(fileExt == "txt"){
|
|
| 328 |
- url = "/web/mjon/fax/addr/sendTxtFilePhoneNumAjax.do"; |
|
| 329 |
- }else{
|
|
| 330 |
- alert('txt, xls, xlsx 파일만 업로드 할수 있습니다.');
|
|
| 331 |
- return; |
|
| 332 |
- } |
|
| 333 |
- |
|
| 334 |
- //엑셀 데이터 변수에 자료가 있으면 지워준다. |
|
| 335 |
- if(excelAddr.length > 0){
|
|
| 336 |
- excelAddr = []; |
|
| 337 |
- } |
|
| 338 |
- |
|
| 339 |
- $.ajax({
|
|
| 340 |
- type: "POST", |
|
| 341 |
- enctype: 'multipart/form-data', |
|
| 342 |
- url: url, |
|
| 343 |
- data: data, |
|
| 344 |
- dataType:'json', |
|
| 345 |
- async: true, |
|
| 346 |
- processData: false, |
|
| 347 |
- contentType: false, |
|
| 348 |
- cache: false, |
|
| 349 |
- //timeout: 600000, |
|
| 350 |
- success: function (returnData, status) {
|
|
| 351 |
- if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
|
|
| 352 |
- if(returnData.success){
|
|
| 353 |
- var data = returnData.data; |
|
| 354 |
- var message = returnData.message; |
|
| 355 |
- |
|
| 356 |
- if (message == "20000") {
|
|
| 357 |
- alert("2만줄 이상의 업로드는 데이터 부하로 업로드 할수 없습니다.");
|
|
| 358 |
- } |
|
| 359 |
- else {
|
|
| 360 |
- if(data != null){
|
|
| 361 |
- var arr = []; // 넘어온 데이터를 받은 배열 변수 |
|
| 362 |
- $.each(data, function(i, item){
|
|
| 363 |
- arr.push({name: item.name, phone: item.phone, memo: item.memo});
|
|
| 364 |
- }); |
|
| 365 |
- |
|
| 366 |
- addPhoneInfo(arr); // 연락처를 처리해줄 함수 호출 |
|
| 367 |
- } |
|
| 368 |
- |
|
| 369 |
- //메세지가 있는 경우 알려주기 |
|
| 370 |
- if(message != '' && message != null) {
|
|
| 371 |
- alert(returnData.message); |
|
| 372 |
- } |
|
| 373 |
- } |
|
| 374 |
- |
|
| 375 |
- }else{
|
|
| 376 |
- alert(returnData.message); |
|
| 377 |
- } |
|
| 378 |
- } else if(status== 'fail'){
|
|
| 379 |
- alert("저장에 실패하였습니다. !!");
|
|
| 380 |
- } |
|
| 381 |
- }, |
|
| 382 |
- error: function (e) {
|
|
| 383 |
- alert("저장에 실패하였습니다.");
|
|
| 384 |
- console.log("ERROR : ", e);
|
|
| 385 |
- }, |
|
| 386 |
- beforeSend : function(xmlHttpRequest) {
|
|
| 387 |
- //로딩창 show |
|
| 388 |
- $('.loading_layer').addClass('active');
|
|
| 389 |
- }, |
|
| 390 |
- complete : function(xhr, textStatus) {
|
|
| 391 |
- //로딩창 hide |
|
| 392 |
- $('.loading_layer').removeClass('active');
|
|
| 393 |
- } |
|
| 394 |
- }); |
|
| 395 |
- } |
|
| 396 |
- |
|
| 397 |
-} |
|
| 398 |
- |
|
| 399 |
- |
|
| 400 |
-//############################################################################################# |
|
| 401 | 229 |
//등록 |
| 402 | 230 |
//############################################################################################# |
| 403 | 231 |
|
... | ... | @@ -613,7 +441,7 @@ |
| 613 | 441 |
sendBatch(); // 다음 배치 전송 |
| 614 | 442 |
} |
| 615 | 443 |
} else {
|
| 616 |
- alert("오류 알림 : " + returnData.msg);
|
|
| 444 |
+ alert("오류 알림 : " + data.message);
|
|
| 617 | 445 |
} |
| 618 | 446 |
} |
| 619 | 447 |
,error: function (e) {
|
--- src/main/webapp/WEB-INF/jsp/web/fax/addr/include/FaxAddrListforExcel.jsp
+++ src/main/webapp/WEB-INF/jsp/web/fax/addr/include/FaxAddrListforExcel.jsp
... | ... | @@ -17,6 +17,9 @@ |
| 17 | 17 |
|
| 18 | 18 |
|
| 19 | 19 |
|
| 20 |
+//############################################################################################# |
|
| 21 |
+//Tabulator |
|
| 22 |
+//############################################################################################# |
|
| 20 | 23 |
|
| 21 | 24 |
$(document).ready(function(){
|
| 22 | 25 |
// 파일 선택 버튼 클릭 이벤트 |
--- src/main/webapp/js/MJUtill.js
+++ src/main/webapp/js/MJUtill.js
... | ... | @@ -58,8 +58,6 @@ |
| 58 | 58 |
function checkFaxNum(str) {
|
| 59 | 59 |
str = removeDash(str); |
| 60 | 60 |
var subNum = str.substring(0,3); |
| 61 |
- /*var regExp = /^(02[0-9]{1}|030|050|060|070|080|0[3-6]{1}[1-5]{1}|1[0-9]{1}[0-9]{1})$/; //지역번호(일반전화) 형식까지 체크해주는 정규식
|
|
| 62 |
- return regExp.test(subNum);*/ |
|
| 63 | 61 |
var regExp = /^(02|0[3-6][1-4]|030|050|060|070|080|1\d{2})$/;
|
| 64 | 62 |
return regExp.test(subNum); |
| 65 | 63 |
} |
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?