--- src/main/java/itn/let/mail/service/StatusResponse.java
+++ src/main/java/itn/let/mail/service/StatusResponse.java
... | ... | @@ -5,6 +5,10 @@ |
| 5 | 5 |
import org.springframework.http.HttpStatus; |
| 6 | 6 |
|
| 7 | 7 |
import itn.let.mjo.pay.service.RefundVO; |
| 8 |
+import lombok.Builder; |
|
| 9 |
+import lombok.Getter; |
|
| 10 |
+import lombok.NoArgsConstructor; |
|
| 11 |
+import lombok.Setter; |
|
| 8 | 12 |
|
| 9 | 13 |
/** |
| 10 | 14 |
* |
... | ... | @@ -22,6 +26,9 @@ |
| 22 | 26 |
* |
| 23 | 27 |
* |
| 24 | 28 |
*/ |
| 29 |
+@Getter |
|
| 30 |
+@Setter |
|
| 31 |
+@NoArgsConstructor |
|
| 25 | 32 |
public class StatusResponse {
|
| 26 | 33 |
|
| 27 | 34 |
private HttpStatus status; |
... | ... | @@ -61,51 +68,13 @@ |
| 61 | 68 |
this.messageTemp = messageTemp; |
| 62 | 69 |
} |
| 63 | 70 |
|
| 64 |
- public HttpStatus getStatus() {
|
|
| 65 |
- return status; |
|
| 66 |
- } |
|
| 67 |
- |
|
| 68 |
- public void setStatus(HttpStatus status) {
|
|
| 71 |
+ @Builder |
|
| 72 |
+ public StatusResponse(HttpStatus status, String msg, Object data) {
|
|
| 69 | 73 |
this.status = status; |
| 74 |
+ this.message = msg; |
|
| 75 |
+ this.object = data; |
|
| 70 | 76 |
} |
| 71 |
- |
|
| 72 |
- public String getMessage() {
|
|
| 73 |
- return message; |
|
| 74 |
- } |
|
| 75 |
- |
|
| 76 |
- public void setMessage(String message) {
|
|
| 77 |
- this.message = message; |
|
| 78 |
- } |
|
| 79 |
- |
|
| 80 |
- public String getMessageTemp() {
|
|
| 81 |
- return messageTemp; |
|
| 82 |
- } |
|
| 83 |
- |
|
| 84 |
- public void setMessageTemp(String messageTemp) {
|
|
| 85 |
- this.messageTemp = messageTemp; |
|
| 86 |
- } |
|
| 87 |
- |
|
| 88 |
- public RefundVO getRefundVO() {
|
|
| 89 |
- return refundVO; |
|
| 90 |
- } |
|
| 91 |
- |
|
| 92 |
- public void setRefundVO(RefundVO refundVO) {
|
|
| 93 |
- this.refundVO = refundVO; |
|
| 94 |
- } |
|
| 95 |
- |
|
| 96 |
- public Object getObject() {
|
|
| 97 |
- return object; |
|
| 98 |
- } |
|
| 99 |
- |
|
| 100 |
- public void setObject(Object object) {
|
|
| 101 |
- this.object = object; |
|
| 102 |
- } |
|
| 103 |
- |
|
| 104 |
- public LocalDateTime getTimestamp() {
|
|
| 105 |
- return timestamp; |
|
| 106 |
- } |
|
| 107 |
- |
|
| 108 |
- public void setTimestamp(LocalDateTime timestamp) {
|
|
| 109 |
- this.timestamp = timestamp; |
|
| 110 |
- } |
|
| 77 |
+ |
|
| 78 |
+ |
|
| 79 |
+ |
|
| 111 | 80 |
} |
--- src/main/java/itn/let/mjo/addr/service/AddrGroupService.java
+++ src/main/java/itn/let/mjo/addr/service/AddrGroupService.java
... | ... | @@ -2,6 +2,8 @@ |
| 2 | 2 |
|
| 3 | 3 |
import java.util.List; |
| 4 | 4 |
|
| 5 |
+import itn.let.mail.service.StatusResponse; |
|
| 6 |
+ |
|
| 5 | 7 |
/** |
| 6 | 8 |
* 주소록 관리를 위한 서비스 인터페이스 클래스 |
| 7 | 9 |
* @author ITN |
--- src/main/java/itn/let/mjo/addr/service/AddrService.java
+++ src/main/java/itn/let/mjo/addr/service/AddrService.java
... | ... | @@ -2,6 +2,8 @@ |
| 2 | 2 |
|
| 3 | 3 |
import java.util.List; |
| 4 | 4 |
|
| 5 |
+import itn.let.mail.service.StatusResponse; |
|
| 6 |
+ |
|
| 5 | 7 |
/** |
| 6 | 8 |
* 주소록 관리를 위한 서비스 인터페이스 클래스 |
| 7 | 9 |
* @author ITN |
... | ... | @@ -99,5 +101,6 @@ |
| 99 | 101 |
|
| 100 | 102 |
// 주소록 대량등록 By Temp 주소록 All |
| 101 | 103 |
public int insertAddrByTempAddrAll(List<AddrVO> addrList, AddrVO addrVO) throws Exception; |
| 102 |
- |
|
| 104 |
+ |
|
| 105 |
+ public StatusResponse addrMassInsertByTempAjax_advc(List<AddrVO> addrListVO, String userId) throws Exception; |
|
| 103 | 106 |
} |
--- src/main/java/itn/let/mjo/addr/service/impl/AddrGroupServiceImpl.java
+++ src/main/java/itn/let/mjo/addr/service/impl/AddrGroupServiceImpl.java
... | ... | @@ -1,12 +1,19 @@ |
| 1 | 1 |
package itn.let.mjo.addr.service.impl; |
| 2 | 2 |
|
| 3 |
+import java.nio.charset.Charset; |
|
| 4 |
+import java.time.LocalDateTime; |
|
| 3 | 5 |
import java.util.List; |
| 6 |
+import java.util.regex.Matcher; |
|
| 7 |
+import java.util.regex.Pattern; |
|
| 4 | 8 |
|
| 5 | 9 |
import javax.annotation.Resource; |
| 6 | 10 |
|
| 11 |
+import org.springframework.http.HttpStatus; |
|
| 12 |
+import org.springframework.http.ResponseEntity; |
|
| 7 | 13 |
import org.springframework.stereotype.Service; |
| 8 | 14 |
|
| 9 | 15 |
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; |
| 16 |
+import itn.let.mail.service.StatusResponse; |
|
| 10 | 17 |
import itn.let.mjo.addr.service.AddrGroupService; |
| 11 | 18 |
import itn.let.mjo.addr.service.AddrGroupVO; |
| 12 | 19 |
import itn.let.mjo.addr.service.AddrService; |
... | ... | @@ -37,6 +44,11 @@ |
| 37 | 44 |
|
| 38 | 45 |
@Resource(name = "AddrDAO") |
| 39 | 46 |
private AddrDAO addrDAO; |
| 47 |
+ |
|
| 48 |
+ |
|
| 49 |
+ |
|
| 50 |
+ |
|
| 51 |
+ |
|
| 40 | 52 |
|
| 41 | 53 |
public List<AddrGroupVO> selectAddrGroupList(AddrGroupVO addrGroupVO) throws Exception {
|
| 42 | 54 |
return addrGroupDAO.selectAddrGroupList(addrGroupVO); |
... | ... | @@ -159,4 +171,6 @@ |
| 159 | 171 |
|
| 160 | 172 |
|
| 161 | 173 |
} |
| 174 |
+ |
|
| 175 |
+ |
|
| 162 | 176 |
} |
--- src/main/java/itn/let/mjo/addr/service/impl/AddrServiceImpl.java
+++ src/main/java/itn/let/mjo/addr/service/impl/AddrServiceImpl.java
... | ... | @@ -1,18 +1,25 @@ |
| 1 | 1 |
package itn.let.mjo.addr.service.impl; |
| 2 | 2 |
|
| 3 |
+import java.nio.charset.Charset; |
|
| 3 | 4 |
import java.text.SimpleDateFormat; |
| 5 |
+import java.time.LocalDateTime; |
|
| 4 | 6 |
import java.util.Date; |
| 5 | 7 |
import java.util.List; |
| 6 | 8 |
import java.util.Locale; |
| 9 |
+import java.util.concurrent.atomic.AtomicInteger; |
|
| 10 |
+import java.util.regex.Matcher; |
|
| 11 |
+import java.util.regex.Pattern; |
|
| 7 | 12 |
|
| 8 | 13 |
import javax.annotation.Resource; |
| 9 | 14 |
|
| 15 |
+import org.springframework.http.HttpStatus; |
|
| 10 | 16 |
import org.springframework.stereotype.Service; |
| 11 | 17 |
|
| 12 | 18 |
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; |
| 13 | 19 |
import egovframework.rte.fdl.idgnr.EgovIdGnrService; |
| 14 | 20 |
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; |
| 15 | 21 |
import itn.com.cmm.LoginVO; |
| 22 |
+import itn.let.mail.service.StatusResponse; |
|
| 16 | 23 |
import itn.let.mjo.addr.service.AddrGroupVO; |
| 17 | 24 |
import itn.let.mjo.addr.service.AddrService; |
| 18 | 25 |
import itn.let.mjo.addr.service.AddrTransHistVO; |
... | ... | @@ -44,10 +51,16 @@ |
| 44 | 51 |
@Resource(name = "AddrTransHistDAO") |
| 45 | 52 |
private AddrTransHistDAO addrTransHistDAO; |
| 46 | 53 |
|
| 47 |
- |
|
| 48 | 54 |
@Resource(name = "egovAddrTransHistIdGnrService") |
| 49 | 55 |
private EgovIdGnrService idgenAddrTransHistId; |
| 50 | 56 |
|
| 57 |
+ |
|
| 58 |
+ |
|
| 59 |
+ private static final String PHONE_REGEX = "^(01[016789]-?\\d{3,4}-?\\d{4})$";
|
|
| 60 |
+ private static final Pattern PHONE_PATTERN = Pattern.compile(PHONE_REGEX); |
|
| 61 |
+ private static final Charset EUC_KR = Charset.forName("EUC-KR");
|
|
| 62 |
+ private static final int MAX_ADDR_CNT = 500000; |
|
| 63 |
+ |
|
| 51 | 64 |
|
| 52 | 65 |
public List<AddrVO> selectAddrList(AddrVO addrVO) throws Exception {
|
| 53 | 66 |
return addrDAO.selectAddrList(addrVO); |
... | ... | @@ -366,5 +379,153 @@ |
| 366 | 379 |
|
| 367 | 380 |
return rtnVal; |
| 368 | 381 |
} |
| 382 |
+ |
|
| 383 |
+ @Override |
|
| 384 |
+ public StatusResponse addrMassInsertByTempAjax_advc(List<AddrVO> addrListVO, String userId) throws Exception {
|
|
| 385 |
+ |
|
| 369 | 386 |
|
| 387 |
+ |
|
| 388 |
+ // data init |
|
| 389 |
+ // For-each loop |
|
| 390 |
+ for (AddrVO addr : addrListVO) { addr.setMberId(userId); }
|
|
| 391 |
+ |
|
| 392 |
+ |
|
| 393 |
+ |
|
| 394 |
+ // step1 현재 주소록 갯수 조회 |
|
| 395 |
+ |
|
| 396 |
+ //회원별 주소록 전체 갯수 조회 |
|
| 397 |
+ int addrBefCnt = addrDAO.selectAddrTotalCount(addrListVO.get(0)); |
|
| 398 |
+ int addrNewCnt = addrListVO.size(); //신규 추가할 주소록 갯수 |
|
| 399 |
+ int sumAddrCnt = addrBefCnt + addrNewCnt; |
|
| 400 |
+ |
|
| 401 |
+ // step1-1 총 갯수가 (주소록 갯수 + 신규 주소록)50만건 체크 |
|
| 402 |
+ if(sumAddrCnt > MAX_ADDR_CNT) {
|
|
| 403 |
+ return new StatusResponse( |
|
| 404 |
+ HttpStatus.BAD_REQUEST |
|
| 405 |
+ , "주소록은 총 50만개까지만 등록이 가능합니다." |
|
| 406 |
+ , LocalDateTime.now() |
|
| 407 |
+ ); |
|
| 408 |
+ |
|
| 409 |
+ } |
|
| 410 |
+ |
|
| 411 |
+ // step2 신규 주소록 생성 및 북마크 체크 |
|
| 412 |
+ // => AddrGrpId |
|
| 413 |
+ // |
|
| 414 |
+ if ("NEW".equals(addrListVO.get(0).getAddrGrpId())) {
|
|
| 415 |
+ |
|
| 416 |
+ AddrGroupVO addrGroupVO = new AddrGroupVO(); |
|
| 417 |
+ addrGroupVO.setMberId(userId); |
|
| 418 |
+ addrGroupVO.setAddrGrpNm(addrListVO.get(0).getAddrGrpNm()); |
|
| 419 |
+ // 정렬순서 |
|
| 420 |
+ |
|
| 421 |
+ int nextOrderNumber = addrGroupDAO.selectMaxOrderNumber(addrGroupVO); |
|
| 422 |
+ addrGroupVO.setGrpOrder(nextOrderNumber); |
|
| 423 |
+ |
|
| 424 |
+ addrGroupDAO.insertAddrGroup(addrGroupVO); |
|
| 425 |
+ |
|
| 426 |
+ // 신규 추가한 그룹아이디 |
|
| 427 |
+ for (AddrVO addr : addrListVO) { addr.setAddrGrpId(addrGroupVO.getAddrGrpId()); }
|
|
| 428 |
+ |
|
| 429 |
+ } |
|
| 430 |
+ else if ("bookmark".equals(addrListVO.get(0).getAddrGrpId()))
|
|
| 431 |
+ {
|
|
| 432 |
+ for (AddrVO addr : addrListVO) { addr.setBookmark("Y"); addr.setAddrGrpId("0"); }
|
|
| 433 |
+ } |
|
| 434 |
+ else |
|
| 435 |
+ {
|
|
| 436 |
+ for (AddrVO addr : addrListVO) { addr.setBookmark("N"); }
|
|
| 437 |
+ } |
|
| 438 |
+ |
|
| 439 |
+ // step4-1 true |
|
| 440 |
+ // => 폰번호 빼고 바이트 체크해서 20byte만 짜르고 넣기 |
|
| 441 |
+ // => 폰번호는 유효성 체크 하기 |
|
| 442 |
+ |
|
| 443 |
+ long startTime = System.currentTimeMillis(); |
|
| 444 |
+ // 유효성 체크 및 하이픈 제거, 유효하지 않은 번호는 리스트에서 제거 |
|
| 445 |
+ // 나머지 필드들 20byte (euc-kr) 체크 후 넘으면 자르기 |
|
| 446 |
+ AtomicInteger invalid = new AtomicInteger(0); // 스레드-안전(thread-safe)하게 정수 값을 업데이트할 수 있는 기능을 제공 |
|
| 447 |
+ addrListVO.removeIf(addr -> {
|
|
| 448 |
+ String phoneNo = addr.getAddrPhoneNo(); |
|
| 449 |
+// phoneNo = phoneNo != null ? phoneNo.replaceAll("-", "") : "";
|
|
| 450 |
+// System.out.println("phoneNo : "+ phoneNo);
|
|
| 451 |
+ if (isValidPhoneNumber(phoneNo)) {
|
|
| 452 |
+ addr.setAddrPhoneNo(phoneNo); // 하이픈이 제거된 유효한 번호 설정 |
|
| 453 |
+ trimFieldsBytes(addr); // 다른 필드들에 대한 20바이트 체크 및 자르기 |
|
| 454 |
+ return false; // 유효한 번호는 제거하지 않음 |
|
| 455 |
+ } else {
|
|
| 456 |
+// System.out.println(phoneNo + " is an invalid phone number. Removing from list."); |
|
| 457 |
+ invalid.getAndIncrement(); // 유효하지 않은 번호 개수 증가 |
|
| 458 |
+ return true; // 유효하지 않은 번호는 제거 |
|
| 459 |
+ } |
|
| 460 |
+ }); |
|
| 461 |
+ |
|
| 462 |
+ |
|
| 463 |
+ long endTime = System.currentTimeMillis(); |
|
| 464 |
+ double executionTime = (endTime - startTime) / 1000.0; |
|
| 465 |
+ System.out.println(" number chk Execution time: " + executionTime + " seconds");
|
|
| 466 |
+ |
|
| 467 |
+ startTime = System.currentTimeMillis(); |
|
| 468 |
+ System.out.println("addrListVO.size() : "+ addrListVO.size());
|
|
| 469 |
+ |
|
| 470 |
+ if(addrListVO.size() > 0) {
|
|
| 471 |
+ // 등록 |
|
| 472 |
+ addrDAO.insertAddrList(addrListVO); |
|
| 473 |
+ |
|
| 474 |
+ } |
|
| 475 |
+ |
|
| 476 |
+ endTime = System.currentTimeMillis(); |
|
| 477 |
+ executionTime = (endTime - startTime) / 1000.0; |
|
| 478 |
+ System.out.println("INSERT Execution time: " + executionTime + " seconds");
|
|
| 479 |
+ |
|
| 480 |
+ |
|
| 481 |
+ // 중복체크 dupliCnt |
|
| 482 |
+ |
|
| 483 |
+ |
|
| 484 |
+ |
|
| 485 |
+ // |
|
| 486 |
+ String message = "저장에 성공했습니다.\n저장 : " + addrListVO.size() + "건" |
|
| 487 |
+// +", 중복 : " + invalid.dupliCnt + "건" |
|
| 488 |
+ +", INERT 총 시간 : " + executionTime+ "초" |
|
| 489 |
+ +", 휴대폰번호 오류 : " + invalid.get() + "건"; |
|
| 490 |
+ |
|
| 491 |
+ return new StatusResponse( |
|
| 492 |
+ HttpStatus.OK |
|
| 493 |
+ , message |
|
| 494 |
+// , "" |
|
| 495 |
+ , LocalDateTime.now()); |
|
| 496 |
+ } |
|
| 497 |
+ |
|
| 498 |
+ public static boolean isValidPhoneNumber(String phoneNo) {
|
|
| 499 |
+ if (phoneNo == null || phoneNo.isEmpty()) {
|
|
| 500 |
+ return false; |
|
| 501 |
+ } |
|
| 502 |
+ Matcher matcher = PHONE_PATTERN.matcher(phoneNo); |
|
| 503 |
+ return matcher.matches(); |
|
| 504 |
+ } |
|
| 505 |
+ |
|
| 506 |
+ |
|
| 507 |
+ public static void trimFieldsBytes(AddrVO addr) {
|
|
| 508 |
+ addr.setAddrInfo1(trimToBytes(addr.getAddrInfo1(), 20)); |
|
| 509 |
+ addr.setAddrInfo2(trimToBytes(addr.getAddrInfo2(), 20)); |
|
| 510 |
+ addr.setAddrInfo3(trimToBytes(addr.getAddrInfo3(), 20)); |
|
| 511 |
+ addr.setAddrInfo4(trimToBytes(addr.getAddrInfo4(), 20)); |
|
| 512 |
+ addr.setAddrComment(trimToBytes(addr.getAddrComment(), 250)); |
|
| 513 |
+ addr.setAddrNm(trimToBytes(addr.getAddrNm(), 20)); |
|
| 514 |
+ } |
|
| 515 |
+ |
|
| 516 |
+ // maxBytes만큼 글자수 처리해서 리턴 |
|
| 517 |
+ public static String trimToBytes(String str, int maxBytes) {
|
|
| 518 |
+ if (str == null) {
|
|
| 519 |
+ return null; |
|
| 520 |
+ } |
|
| 521 |
+ byte[] bytes = str.getBytes(EUC_KR); |
|
| 522 |
+ if (bytes.length <= maxBytes) {
|
|
| 523 |
+ return str; |
|
| 524 |
+ } |
|
| 525 |
+ int len = maxBytes; |
|
| 526 |
+ while (len > 0 && bytes[len - 1] < 0) {
|
|
| 527 |
+ len--; // 바이트 배열을 maxBytes로 자를 때, 잘못된 분할을 피하기 위해 문자 경계 확인 |
|
| 528 |
+ } |
|
| 529 |
+ return new String(bytes, 0, len, EUC_KR); |
|
| 530 |
+ } |
|
| 370 | 531 |
} |
--- src/main/java/itn/let/mjo/addr/web/AddrRestController.java
+++ src/main/java/itn/let/mjo/addr/web/AddrRestController.java
... | ... | @@ -1,26 +1,25 @@ |
| 1 | 1 |
package itn.let.mjo.addr.web; |
| 2 | 2 |
|
| 3 |
+import java.nio.charset.Charset; |
|
| 3 | 4 |
import java.time.LocalDateTime; |
| 4 |
-import java.util.ArrayList; |
|
| 5 | 5 |
import java.util.List; |
| 6 |
+import java.util.regex.Matcher; |
|
| 7 |
+import java.util.regex.Pattern; |
|
| 6 | 8 |
|
| 7 | 9 |
import javax.annotation.Resource; |
| 8 | 10 |
|
| 9 | 11 |
import org.springframework.http.HttpStatus; |
| 10 | 12 |
import org.springframework.http.ResponseEntity; |
| 11 | 13 |
import org.springframework.ui.ModelMap; |
| 12 |
-import org.springframework.web.bind.annotation.ModelAttribute; |
|
| 13 | 14 |
import org.springframework.web.bind.annotation.RequestBody; |
| 14 | 15 |
import org.springframework.web.bind.annotation.RequestMapping; |
| 15 | 16 |
import org.springframework.web.bind.annotation.RestController; |
| 16 |
-import org.springframework.web.servlet.ModelAndView; |
|
| 17 | 17 |
import org.springframework.web.servlet.mvc.support.RedirectAttributes; |
| 18 | 18 |
|
| 19 | 19 |
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; |
| 20 | 20 |
import itn.com.cmm.EgovMessageSource; |
| 21 | 21 |
import itn.com.cmm.LoginVO; |
| 22 | 22 |
import itn.com.utl.fcc.service.EgovStringUtil; |
| 23 |
-import itn.let.fax.admin.service.FaxStatVO; |
|
| 24 | 23 |
import itn.let.mail.service.StatusResponse; |
| 25 | 24 |
import itn.let.mjo.addr.service.AddrGroupService; |
| 26 | 25 |
import itn.let.mjo.addr.service.AddrGroupVO; |
... | ... | @@ -63,55 +62,31 @@ |
| 63 | 62 |
* 주소록 대량등록 저장 |
| 64 | 63 |
* @param searchVO |
| 65 | 64 |
* @param model |
| 66 |
- * @return "/web/mjon/addr/addrMassInsertByTempAjax.do" |
|
| 65 |
+ * @return "/web/mjon/addr/addrMassInsertByTempAjax_advc.do" |
|
| 67 | 66 |
* @throws Exception |
| 68 | 67 |
*/ |
| 69 | 68 |
@RequestMapping(value= {"/web/mjon/addr/addrMassInsertByTempAjax_advc.do"})
|
| 70 |
- public ResponseEntity<StatusResponse> addrMassInsertByTempAjax(@RequestBody List<AddrVO> addrListVO, |
|
| 71 |
- RedirectAttributes redirectAttributes, |
|
| 72 |
- ModelMap model) throws Exception{
|
|
| 69 |
+ public ResponseEntity<StatusResponse> addrMassInsertByTempAjax_advc(@RequestBody List<AddrVO> addrListVO |
|
| 70 |
+ ,ModelMap model) throws Exception{
|
|
| 73 | 71 |
|
| 74 | 72 |
|
| 75 |
- System.out.println("??");
|
|
| 76 |
- System.out.println("?? " + addrListVO.get(0).toString());
|
|
| 77 | 73 |
|
| 78 |
- return ResponseEntity.ok().body(new StatusResponse(HttpStatus.OK, "", LocalDateTime.now())); |
|
| 74 |
+ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 75 |
+ String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 76 |
+ |
|
| 77 |
+ if(userId.equals("")) {
|
|
| 78 |
+ return ResponseEntity.ok( |
|
| 79 |
+ new StatusResponse(HttpStatus.UNAUTHORIZED |
|
| 80 |
+ , "로그인을 하셔야 이용 가능합니다." |
|
| 81 |
+ , LocalDateTime.now() |
|
| 82 |
+ ) |
|
| 83 |
+ ); |
|
| 84 |
+ } |
|
| 85 |
+ |
|
| 86 |
+ return ResponseEntity.ok().body(addrService.addrMassInsertByTempAjax_advc(addrListVO, userId)); |
|
| 79 | 87 |
} |
| 80 | 88 |
|
| 81 |
- /* 바이트 자르기 |
|
| 82 |
- UTF-8일 경우 |
|
| 83 |
- subStringBytes("블라블라블라라", 10, 3);
|
|
| 84 |
- EUC-KR일 경우 |
|
| 85 |
- subStringBytes("블라블라블라라", 10, 2);
|
|
| 86 |
- */ |
|
| 87 |
- public String subStringBytes(String str, int byteLength, int sizePerLetter) {
|
|
| 88 |
- int retLength = 0; |
|
| 89 |
- int tempSize = 0; |
|
| 90 |
- int asc; |
|
| 91 |
- if (str == null || "".equals(str) || "null".equals(str)) {
|
|
| 92 |
- str = ""; |
|
| 93 |
- } |
|
| 94 |
- |
|
| 95 |
- int length = str.length(); |
|
| 96 |
- |
|
| 97 |
- for (int i = 1; i <= length; i++) {
|
|
| 98 |
- asc = (int) str.charAt(i - 1); |
|
| 99 |
- if (asc > 127) {
|
|
| 100 |
- if (byteLength >= tempSize + sizePerLetter) {
|
|
| 101 |
- tempSize += sizePerLetter; |
|
| 102 |
- retLength++; |
|
| 103 |
- } |
|
| 104 |
- } else {
|
|
| 105 |
- if (byteLength > tempSize) {
|
|
| 106 |
- tempSize++; |
|
| 107 |
- retLength++; |
|
| 108 |
- } |
|
| 109 |
- } |
|
| 110 |
- } |
|
| 111 |
- |
|
| 112 |
- return str.substring(0, retLength); |
|
| 113 |
- } |
|
| 114 |
- |
|
| 89 |
+ // |
|
| 115 | 90 |
|
| 116 | 91 |
|
| 117 | 92 |
}(No newline at end of file) |
--- src/main/resources/egovframework/sqlmap/let/mjo/addr/Addr_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/mjo/addr/Addr_SQL_Mysql.xml
... | ... | @@ -775,7 +775,7 @@ |
| 775 | 775 |
</select> |
| 776 | 776 |
|
| 777 | 777 |
<insert id="AddrDAO.insertAddrList" parameterClass="java.util.List"> |
| 778 |
- |
|
| 778 |
+ /* AddrDAO.insertAddrList */ |
|
| 779 | 779 |
INSERT INTO MJ_ADDR |
| 780 | 780 |
( |
| 781 | 781 |
MBER_ID, |
... | ... | @@ -790,9 +790,9 @@ |
| 790 | 790 |
BOOKMARK, |
| 791 | 791 |
ADDR_COMMENT, |
| 792 | 792 |
FRST_REGISTER_ID |
| 793 |
- )VALUES |
|
| 794 |
- <iterate conjunction=","> |
|
| 795 |
- ( |
|
| 793 |
+ ) |
|
| 794 |
+ <iterate prepend="VALUES" conjunction=","> |
|
| 795 |
+ ( |
|
| 796 | 796 |
#[].mberId#, |
| 797 | 797 |
#[].addrGrpId#, |
| 798 | 798 |
#[].addrNm#, |
... | ... | @@ -805,8 +805,8 @@ |
| 805 | 805 |
#[].bookmark#, |
| 806 | 806 |
#[].addrComment#, |
| 807 | 807 |
#[].frstRegisterId# |
| 808 |
- ) |
|
| 809 |
- </iterate> |
|
| 808 |
+ ) |
|
| 809 |
+ </iterate> |
|
| 810 | 810 |
|
| 811 | 811 |
</insert> |
| 812 | 812 |
|
--- src/main/webapp/WEB-INF/jsp/web/addr/AddrList.jsp
+++ src/main/webapp/WEB-INF/jsp/web/addr/AddrList.jsp
... | ... | @@ -4,11 +4,15 @@ |
| 4 | 4 |
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> |
| 5 | 5 |
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> |
| 6 | 6 |
|
| 7 |
+<script type="text/javascript"> |
|
| 8 |
+ var currentTime = "${Instant.now().toEpochMilli()}";
|
|
| 9 |
+</script> |
|
| 10 |
+ |
|
| 7 | 11 |
<script type="text/javascript" src="<c:url value='/publish/js/content.js'/>"></script> |
| 8 | 12 |
<script type="text/javascript" src="https://oss.sheetjs.com/sheetjs/xlsx.full.min.js"></script> |
| 9 | 13 |
<script type="text/javascript" src="<c:url value='/js/web/addr/init.js'/>"></script> |
| 10 | 14 |
<script type="text/javascript" src="<c:url value='/js/web/addr/event.js'/>"></script> |
| 11 |
-<script type="text/javascript" src="<c:url value='/js/web/addr/utils.js'/>"></script> |
|
| 15 |
+<script type="text/javascript" src="<c:url value='/js/web/addr/utils.js'/>?v=${currentTime}"></script>
|
|
| 12 | 16 |
|
| 13 | 17 |
|
| 14 | 18 |
<script type="text/javascript"> |
... | ... | @@ -274,7 +278,8 @@ |
| 274 | 278 |
|
| 275 | 279 |
// 대량등록 닫기 |
| 276 | 280 |
function setAddrMassClose() {
|
| 277 |
- tableR.clearData(); |
|
| 281 |
+ var $objTabul = fn_utils_getTabulator(); |
|
| 282 |
+ $objTabul.clearData(); |
|
| 278 | 283 |
$("#rowTotCnt").text(0); //총건수 수정
|
| 279 | 284 |
$("#rowDupCnt").text(0); //중복건수 수정
|
| 280 | 285 |
dupliPhoneDataRealList.length = 0; // 중복 휴대폰번호 초기화 |
... | ... | @@ -296,7 +301,7 @@ |
| 296 | 301 |
$.ajax({
|
| 297 | 302 |
url : "<c:url value='/web/addr/getAddrGroupDuplCheckAjax.do' />", |
| 298 | 303 |
type : 'POST', |
| 299 |
- data : {"addrGrpNm" : $("#addrGrpNm").val()},
|
|
| 304 |
+ data : {"addrGrpNm" : $(tabluC+" #addrGrpNm").val()},
|
|
| 300 | 305 |
dataType:'json', |
| 301 | 306 |
async: false, // 동기 |
| 302 | 307 |
success : function(data, status){
|
... | ... | @@ -331,7 +336,9 @@ |
| 331 | 336 |
// gMemoList = []; //메모 |
| 332 | 337 |
|
| 333 | 338 |
var $objTabul = fn_utils_getTabulator(); |
| 334 |
- |
|
| 339 |
+ var tabulNm = fn_utils_getTabulatorNm(); |
|
| 340 |
+ var tabluC = '.'+tabulNm |
|
| 341 |
+ |
|
| 335 | 342 |
if($objTabul.getData().length < 1){
|
| 336 | 343 |
alert("한 개 이상의 연락처를 입력하세요");
|
| 337 | 344 |
return false; |
... | ... | @@ -341,7 +348,7 @@ |
| 341 | 348 |
// return false; |
| 342 | 349 |
// } |
| 343 | 350 |
|
| 344 |
- var selectMassVal = $("#addrGrpIdInfo option:selected").val();
|
|
| 351 |
+ var selectMassVal = $(tabluC+" #addrGrpIdInfo option:selected").val(); |
|
| 345 | 352 |
|
| 346 | 353 |
var loginVO = '${LoginVO}';
|
| 347 | 354 |
// if(loginVO == "" || loginVO == null){
|
... | ... | @@ -349,18 +356,46 @@ |
| 349 | 356 |
alert("로그인 후 이용이 가능합니다.");
|
| 350 | 357 |
return false; |
| 351 | 358 |
} |
| 352 |
- else if ($("#addrGrpIdInfo option:selected").val() == "NEW"
|
|
| 353 |
- && ($("#addrGrpNm").val() == ""
|
|
| 354 |
- || $("#addrGrpNm").val() == null
|
|
| 355 |
- || $("#addrGrpNm").val() == undefined)
|
|
| 359 |
+ |
|
| 360 |
+ // tableExcel 그룹의 select 요소들을 확인 |
|
| 361 |
+ var isPhoneSelected = false; |
|
| 362 |
+ var isNameSelected = false; |
|
| 363 |
+ $('.adr_hd.select_adr_hd[data-group="'+tabulNm+'"] .field-selector').each(function() {
|
|
| 364 |
+ var value = $(this).val(); |
|
| 365 |
+ if (value === 'addrPhoneNo') {
|
|
| 366 |
+ isPhoneSelected = true; |
|
| 367 |
+ } else if (value === 'addrNm') {
|
|
| 368 |
+ isNameSelected = true; |
|
| 369 |
+ } |
|
| 370 |
+ |
|
| 371 |
+ // 두 조건이 모두 충족되면 반복문 종료 |
|
| 372 |
+ if (isPhoneSelected && isNameSelected) {
|
|
| 373 |
+ return false; |
|
| 374 |
+ } |
|
| 375 |
+ }); |
|
| 376 |
+ |
|
| 377 |
+ if (!isPhoneSelected || !isNameSelected) {
|
|
| 378 |
+ alert('휴대폰 또는 이름이 선택되지 않았습니다.');
|
|
| 379 |
+ return false; |
|
| 380 |
+ } |
|
| 381 |
+ |
|
| 382 |
+ |
|
| 383 |
+ // 주소록이 새로생성이면 새로운 주소록명이 있는지 확인 |
|
| 384 |
+ if ($(tabluC+" #addrGrpIdInfo option:selected").val() == "NEW" |
|
| 385 |
+ && ($(tabluC+" #addrGrpNm").val() == "" |
|
| 386 |
+ || $(tabluC+" #addrGrpNm").val() == null |
|
| 387 |
+ || $(tabluC+" #addrGrpNm").val() == undefined) |
|
| 356 | 388 |
) |
| 357 | 389 |
{
|
| 358 | 390 |
alert("저장할 그룹을 선택하거나 새 그룹명을 입력해주세요.");
|
| 391 |
+ $(tabluC+" #addrGrpNm").focus(); |
|
| 359 | 392 |
return false; |
| 360 | 393 |
} |
| 361 | 394 |
|
| 362 | 395 |
// 새 그룹명 중복체크 |
| 363 |
- if ($("#addrGrpIdInfo option:selected").val() == "NEW" && $("#addrGrpNm").val() != "") {
|
|
| 396 |
+ if ($(tabluC+" #addrGrpIdInfo option:selected").val() == "NEW" |
|
| 397 |
+ && $(tabluC+" #addrGrpNm").val() != "") |
|
| 398 |
+ {
|
|
| 364 | 399 |
//주소록 중복체크 |
| 365 | 400 |
if (getAddrGroupDuplCheckAjax() == false) {
|
| 366 | 401 |
alert("중복된 그룹명입니다. 새 그룹명을 입력해주세요.");
|
... | ... | @@ -368,44 +403,98 @@ |
| 368 | 403 |
} |
| 369 | 404 |
} |
| 370 | 405 |
|
| 371 |
- var commaSelectedData = numberWithCommas(selectedData.length); |
|
| 372 | 406 |
var confirmMsg = "저장하시겠습니까?\n이름 20byte, [*1*]~[*4*] 40byte, 메모 250byte 초과 글자는 절사됩니다."; |
| 373 | 407 |
// if (selectedData.length >= 10000) {
|
| 374 | 408 |
// confirmMsg = "저장하시겠습니까?\n이름 20byte, [*1*]~[*4*] 40byte, 메모 250byte 초과 글자는 절사됩니다.\n1만건 이상 등록시 약 30초정도 소요됩니다.\n잠시만 기다려주세요."; |
| 375 | 409 |
// } |
| 376 | 410 |
if (confirm(confirmMsg)) {
|
| 377 | 411 |
//로딩창 show |
| 378 |
- $('.loading_layer').addClass('active');
|
|
| 412 |
+// $('.loading_layer').addClass('active');
|
|
| 379 | 413 |
|
| 380 |
- setTimeout(setSenderList_advc, 1000); |
|
| 414 |
+// setTimeout(setSenderList_advc, 1000); |
|
| 415 |
+ setSenderList_advc(); |
|
| 381 | 416 |
} |
| 382 | 417 |
} |
| 383 | 418 |
|
| 384 | 419 |
function setSenderList_advc(){
|
| 385 | 420 |
|
| 421 |
+ // tab에 해당하는 타블레이터 가져오기 |
|
| 386 | 422 |
var $objTabul = fn_utils_getTabulator(); |
| 387 | 423 |
var dataToSend = $objTabul.getData(); |
| 388 | 424 |
|
| 389 |
- $.ajax({
|
|
| 390 |
- type: "POST", |
|
| 391 |
- url: "/web/mjon/addr/addrMassInsertByTempAjax_advc.do", |
|
| 392 |
- data: JSON.stringify(dataToSend), |
|
| 393 |
- dataType: 'json', |
|
| 394 |
- contentType: 'application/json', |
|
| 395 |
- async: true, |
|
| 396 |
- success: function (data) {
|
|
| 397 |
- console.log('data : ', data);
|
|
| 398 |
-// alert(data.object.message); |
|
| 399 |
-// if (data.object.result == 'success') {
|
|
| 400 |
-// location.reload(); |
|
| 401 |
-// } |
|
| 402 |
- }, |
|
| 403 |
- error: function (e) {
|
|
| 404 |
- alert("ERROR : " + JSON.stringify(e));
|
|
| 405 |
- } |
|
| 406 |
- }); |
|
| 407 |
-} |
|
| 425 |
+ var addrGrpIdInfo = $("#addrGrpIdInfo").val();
|
|
| 426 |
+ var addrGrpNmInfo = $("#addrGrpNm").val();
|
|
| 408 | 427 |
|
| 428 |
+ var updateData = dataToSend.map(row => {
|
|
| 429 |
+ row.addrGrpId = addrGrpIdInfo; |
|
| 430 |
+ row.addrGrpNm = addrGrpNmInfo; |
|
| 431 |
+ return row; |
|
| 432 |
+ }); |
|
| 433 |
+ |
|
| 434 |
+ console.log('updateData : ', updateData);
|
|
| 435 |
+ $.ajax({
|
|
| 436 |
+ type: "POST", |
|
| 437 |
+ url: "/web/mjon/addr/addrMassInsertByTempAjax_advc.do", |
|
| 438 |
+ data: JSON.stringify(updateData), |
|
| 439 |
+ dataType: 'json', |
|
| 440 |
+ contentType: 'application/json', |
|
| 441 |
+ async: true, |
|
| 442 |
+ success: function (data) {
|
|
| 443 |
+ console.log('data : ', data);
|
|
| 444 |
+ |
|
| 445 |
+ |
|
| 446 |
+ if (data.status == 'OK') {
|
|
| 447 |
+ alert(data.message); |
|
| 448 |
+// alert("저장에 성공했습니다.\n저장 : " + returnData.resultCnt + "건"
|
|
| 449 |
+// +", 중복 : " + returnData.dupliCnt + "건" |
|
| 450 |
+// +", 휴대폰번호 오류 : " + returnData.errPhoneCnt + "건"); |
|
| 451 |
+ |
|
| 452 |
+ // 중복번호 Hide |
|
| 453 |
+// $("#btnAddrMassDupli").hide();
|
|
| 454 |
+// $("#btnAddrMassSaveDupli").hide();
|
|
| 455 |
+ |
|
| 456 |
+ // 중복건이 있을경우 |
|
| 457 |
+ |
|
| 458 |
+// if (returnData.dupliCnt > 0) {
|
|
| 459 |
+ //alert(returnData.addrMassDupliList.length); |
|
| 460 |
+ |
|
| 461 |
+ // 중복번호(해당 그룹) Show |
|
| 462 |
+// $("#btnAddrMassSaveDupli").show();
|
|
| 463 |
+ |
|
| 464 |
+// addrMassDupliSaveList = returnData.addrMassDupliList; |
|
| 465 |
+ //$("#btnAddrMassSaveDupli").trigger("click");
|
|
| 466 |
+// } |
|
| 467 |
+ |
|
| 468 |
+ // 데이터 비우기 |
|
| 469 |
+ SetClear($objTabul); |
|
| 470 |
+ |
|
| 471 |
+ var selectMassVal = $("#addrGrpIdInfo option:selected").val();
|
|
| 472 |
+ |
|
| 473 |
+ // 주소록그룹 콤보박스 유지 |
|
| 474 |
+ setTimeout(setSelectMassSetting, 500, selectMassVal); |
|
| 475 |
+ } |
|
| 476 |
+ else {
|
|
| 477 |
+ alert("오류 알림 : " + returnData.msg);
|
|
| 478 |
+ } |
|
| 479 |
+ }, |
|
| 480 |
+ error: function (e) {
|
|
| 481 |
+ //로딩창 hide |
|
| 482 |
+ $('.loading_layer').removeClass('active');
|
|
| 483 |
+ |
|
| 484 |
+ alert("저장에 실패하였습니다.");
|
|
| 485 |
+ alert("ERROR : " + JSON.stringify(e));
|
|
| 486 |
+ }, |
|
| 487 |
+ beforeSend : function(xmlHttpRequest) {
|
|
| 488 |
+ //로딩창 show |
|
| 489 |
+ $('.loading_layer').addClass('active');
|
|
| 490 |
+ }, |
|
| 491 |
+ complete : function(xhr, textStatus) {
|
|
| 492 |
+ //로딩창 hide |
|
| 493 |
+ $('.loading_layer').removeClass('active');
|
|
| 494 |
+ } |
|
| 495 |
+ }); |
|
| 496 |
+} |
|
| 497 |
+/* |
|
| 409 | 498 |
function setSenderList() {
|
| 410 | 499 |
var selectedData = tableR.getRows(); |
| 411 | 500 |
for (var i=gArrRestartIndex; i < selectedData.length; i++) {
|
... | ... | @@ -504,9 +593,9 @@ |
| 504 | 593 |
SetAddrMassSave_Step2(); |
| 505 | 594 |
} |
| 506 | 595 |
} |
| 507 |
- |
|
| 596 |
+ */ |
|
| 508 | 597 |
//저장 |
| 509 |
-function SetAddrMassSave_Step2(){
|
|
| 598 |
+/* function SetAddrMassSave_Step2(){
|
|
| 510 | 599 |
var form = document.addrMassForm; |
| 511 | 600 |
form.phoneList.value = gPhoneList; |
| 512 | 601 |
form.nameList.value = gNameList; |
... | ... | @@ -580,7 +669,7 @@ |
| 580 | 669 |
$('.loading_layer').removeClass('active');
|
| 581 | 670 |
} |
| 582 | 671 |
}); |
| 583 |
-} |
|
| 672 |
+} */ |
|
| 584 | 673 |
|
| 585 | 674 |
//주소록그룹 콤보박스 유지 |
| 586 | 675 |
function setSelectMassSetting(selectMassVal) {
|
... | ... | @@ -589,27 +678,29 @@ |
| 589 | 678 |
|
| 590 | 679 |
|
| 591 | 680 |
//데이터 비우기 |
| 592 |
-function SetClear() {
|
|
| 593 |
- $("#addrGrpNm").val(""); // 새그룹명 Clear;
|
|
| 681 |
+function SetClear($objTabul) {
|
|
| 682 |
+ |
|
| 683 |
+ |
|
| 684 |
+ var tabulNm = fn_utils_getTabulatorNm(); |
|
| 685 |
+ var tabluC = '.'+tabulNm |
|
| 686 |
+ |
|
| 687 |
+ $(tabluC+" #addrGrpNm").val(""); // 새그룹명 Clear;
|
|
| 594 | 688 |
// 주소록 그룹정보 불러오기 |
| 595 | 689 |
getAddrGroupList(); |
| 596 | 690 |
|
| 597 |
- var data = tableR.getRows(); |
|
| 598 |
- if (data == null || data == "") {
|
|
| 599 |
- } |
|
| 600 |
- else {
|
|
| 601 |
- tableR.clearData(); |
|
| 602 |
- $("#rowTotCnt").text(0); //총건수 수정
|
|
| 603 |
- $("#rowDupCnt").text(0); //중복건수 수정
|
|
| 604 |
- dupliPhoneDataRealList.length = 0; // 중복 휴대폰번호 초기화 |
|
| 605 |
- } |
|
| 691 |
+ $objTabul.clearData(); |
|
| 692 |
+ $(tabluC+" #rowTotCnt").text(0); //총건수 수정 |
|
| 693 |
+ $(tabluC+" #rowDupCnt").text(0); //중복건수 수정 |
|
| 694 |
+// dupliPhoneDataRealList.length = 0; // 중복 휴대폰번호 초기화 |
|
| 606 | 695 |
} |
| 607 | 696 |
|
| 608 | 697 |
// 주소 대량등록 버튼 클릭 |
| 609 | 698 |
// AddrListAjax.jsp에서 호출 |
| 610 | 699 |
$(document).on('click', '#btnAddrMassRegCall', function() {
|
| 611 | 700 |
getAddrGroupList(); |
| 701 |
+ console.log('??');
|
|
| 612 | 702 |
}); |
| 703 |
+ |
|
| 613 | 704 |
|
| 614 | 705 |
// 주소록 그룹정보 불러오기 |
| 615 | 706 |
function getAddrGroupList() {
|
... | ... | @@ -631,6 +722,9 @@ |
| 631 | 722 |
} |
| 632 | 723 |
}); |
| 633 | 724 |
} |
| 725 |
+ |
|
| 726 |
+ |
|
| 727 |
+ |
|
| 634 | 728 |
|
| 635 | 729 |
// 그룹데이터 노출 |
| 636 | 730 |
function getAddrGroupListShow(jsonList) {
|
... | ... | @@ -641,8 +735,10 @@ |
| 641 | 735 |
for (var j = 0; j < jsonList.length; j++) {
|
| 642 | 736 |
sHtml += " <option value='" + $.trim(jsonList[j].addrGrpId) + "' />" + $.trim(jsonList[j].addrGrpNm) + "</option>"; |
| 643 | 737 |
} |
| 644 |
- |
|
| 645 |
- $("#addrGrpIdInfo").html(sHtml);
|
|
| 738 |
+ |
|
| 739 |
+ var tabulNm = fn_utils_getTabulatorNm(); |
|
| 740 |
+ var tabluC = '.'+tabulNm |
|
| 741 |
+ $(tabluC+" #addrGrpIdInfo").html(sHtml); |
|
| 646 | 742 |
} |
| 647 | 743 |
|
| 648 | 744 |
$(document).on('change', '#addrGrpIdInfo', function() {
|
... | ... | @@ -747,6 +843,7 @@ |
| 747 | 843 |
var tabId = '#tab'+tabNum; |
| 748 | 844 |
$('.tab_c').hide();
|
| 749 | 845 |
$(tabId).show(); |
| 846 |
+ getAddrGroupList(); |
|
| 750 | 847 |
} |
| 751 | 848 |
|
| 752 | 849 |
</script> |
... | ... | @@ -782,19 +879,19 @@ |
| 782 | 879 |
<ul class="list_tab" id="tbTabl"> |
| 783 | 880 |
<li class="tab active" data-tabul="tableExcel"><button type="button" onclick="popupTab(this,'1'); fn_tabToggle('1');">엑셀입력</button></li>
|
| 784 | 881 |
<li class="tab" data-tabul="tableClip"><button type="button" onclick="popupTab(this,'2'); fn_tabToggle('2');">붙여넣기</button></li>
|
| 785 |
- <li class="tab" data-tabul="tableSelf"><button type="button" onclick="popupTab(this,'3'); fn_tabToggle('3');">붙여넣기</button></li>
|
|
| 882 |
+ <li class="tab" data-tabul="tableSelf"><button type="button" onclick="popupTab(this,'3'); fn_tabToggle('3');">직접입력</button></li>
|
|
| 786 | 883 |
</ul><!--// tab button --> |
| 787 | 884 |
</div> |
| 788 | 885 |
|
| 789 | 886 |
|
| 790 |
- <div id="tab1" class="tab_c"> |
|
| 887 |
+ <div id="tab1" class="tab_c tableExcel"> |
|
| 791 | 888 |
<%@include file="/WEB-INF/jsp/web/addr/include/addrListforExcel.jsp" %> |
| 792 | 889 |
</div> |
| 793 |
- <div id="tab2" class="tab_c" style="display: none;"> |
|
| 890 |
+ <div id="tab2" class="tab_c tableClip" style="display: none;"> |
|
| 794 | 891 |
<%@include file="/WEB-INF/jsp/web/addr/include/addrListforClipboard.jsp" %> |
| 795 | 892 |
</div> |
| 796 | 893 |
<!-- <div id="tab3" class="tab_c" style="display: none;"> --> |
| 797 |
- <div id="tab3" class="tab_c" style="display: none;"> |
|
| 894 |
+ <div id="tab3" class="tab_c tableSelf" style="display: none;"> |
|
| 798 | 895 |
<%@include file="/WEB-INF/jsp/web/addr/include/addrListforSelf.jsp" %> |
| 799 | 896 |
</div> |
| 800 | 897 |
|
--- src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforClipboard.jsp
+++ src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforClipboard.jsp
... | ... | @@ -392,30 +392,6 @@ |
| 392 | 392 |
}); |
| 393 | 393 |
|
| 394 | 394 |
|
| 395 |
-// Show Html |
|
| 396 |
-function getAddrGroupListShow(jsonList) {
|
|
| 397 |
- var sHtml = ""; |
|
| 398 |
- sHtml += "<option value='NEW'>그룹추가</option>"; |
|
| 399 |
- sHtml += "<option value='0'>그룹미지정</option>"; |
|
| 400 |
- sHtml += "<option value='bookmark'>자주보내는 번호</option>"; |
|
| 401 |
- for (var j = 0; j < jsonList.length; j++) {
|
|
| 402 |
- sHtml += " <option value='" + $.trim(jsonList[j].addrGrpId) + "' />" + $.trim(jsonList[j].addrGrpNm) + "</option>"; |
|
| 403 |
- } |
|
| 404 |
- |
|
| 405 |
- $("#addrGrpIdInfo").html(sHtml);
|
|
| 406 |
-} |
|
| 407 |
- |
|
| 408 |
-$(document).on('change', '#addrGrpIdInfo', function() {
|
|
| 409 |
- if ($("#addrGrpIdInfo option:selected").val() != "NEW") {
|
|
| 410 |
- $("#addrGrpNm").val(""); // 새그룹명 Clear;
|
|
| 411 |
- } |
|
| 412 |
-}); |
|
| 413 |
- |
|
| 414 |
-//############################################################################################# |
|
| 415 |
-//파일 불러오기 |
|
| 416 |
-//############################################################################################# |
|
| 417 |
- |
|
| 418 |
- |
|
| 419 | 395 |
//체크박스 전체선택/해제 |
| 420 | 396 |
$(document).on("click", "#chkAll", function(e) {
|
| 421 | 397 |
var isChecked = $(this).is(":checked");
|
--- src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforExcel.jsp
+++ src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforExcel.jsp
... | ... | @@ -622,67 +622,6 @@ |
| 622 | 622 |
return isReturn; |
| 623 | 623 |
} |
| 624 | 624 |
|
| 625 |
-//주소록그룹 콤보박스 유지 |
|
| 626 |
-function setSelectMassSetting(selectMassVal) {
|
|
| 627 |
- $("#addrGrpIdInfo").val(selectMassVal).prop("selected", true);
|
|
| 628 |
-} |
|
| 629 |
- |
|
| 630 |
-//데이터 비우기 |
|
| 631 |
-function SetClear() {
|
|
| 632 |
- $("#addrGrpNm").val(""); // 새그룹명 Clear;
|
|
| 633 |
- // 주소록 그룹정보 불러오기 |
|
| 634 |
- getAddrGroupList(); |
|
| 635 |
- |
|
| 636 |
- var data = $tableExcel.getRows(); |
|
| 637 |
- if (data == null || data == "") {
|
|
| 638 |
- } |
|
| 639 |
- else {
|
|
| 640 |
- $tableExcel.clearData(); |
|
| 641 |
- $("#rowTotCnt").text(0); //총건수 수정
|
|
| 642 |
- $("#rowDupCnt").text(0); //중복건수 수정
|
|
| 643 |
- dupliPhoneDataRealList.length = 0; // 중복 휴대폰번호 초기화 |
|
| 644 |
- } |
|
| 645 |
-} |
|
| 646 |
- |
|
| 647 |
-// 주소록 그룹정보 불러오기 |
|
| 648 |
-function getAddrGroupList() {
|
|
| 649 |
- $.ajax({
|
|
| 650 |
- type : "POST", |
|
| 651 |
- async : false, |
|
| 652 |
- url : "/web/mjon/addr/addrGroupListAjax.do", |
|
| 653 |
- data : {},
|
|
| 654 |
- dataType:'json', |
|
| 655 |
- success : function(data) {
|
|
| 656 |
- //alert(JSON.stringify(data.addrGroupList)); |
|
| 657 |
- |
|
| 658 |
- // Show Html |
|
| 659 |
- getAddrGroupListShow(data.addrGroupList); |
|
| 660 |
- }, |
|
| 661 |
- error : function(xhr, status, error) {
|
|
| 662 |
- alert(error); |
|
| 663 |
- return false; |
|
| 664 |
- } |
|
| 665 |
- }); |
|
| 666 |
-} |
|
| 667 |
- |
|
| 668 |
-// Show Html |
|
| 669 |
-function getAddrGroupListShow(jsonList) {
|
|
| 670 |
- var sHtml = ""; |
|
| 671 |
- sHtml += "<option value='NEW'>그룹추가</option>"; |
|
| 672 |
- sHtml += "<option value='0'>그룹미지정</option>"; |
|
| 673 |
- sHtml += "<option value='bookmark'>자주보내는 번호</option>"; |
|
| 674 |
- for (var j = 0; j < jsonList.length; j++) {
|
|
| 675 |
- sHtml += " <option value='" + $.trim(jsonList[j].addrGrpId) + "' />" + $.trim(jsonList[j].addrGrpNm) + "</option>"; |
|
| 676 |
- } |
|
| 677 |
- |
|
| 678 |
- $("#addrGrpIdInfo").html(sHtml);
|
|
| 679 |
-} |
|
| 680 |
- |
|
| 681 |
-$(document).on('change', '#addrGrpIdInfo', function() {
|
|
| 682 |
- if ($("#addrGrpIdInfo option:selected").val() != "NEW") {
|
|
| 683 |
- $("#addrGrpNm").val(""); // 새그룹명 Clear;
|
|
| 684 |
- } |
|
| 685 |
-}); |
|
| 686 | 625 |
|
| 687 | 626 |
//############################################################################################# |
| 688 | 627 |
//파일 불러오기 |
--- src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforSelf.jsp
+++ src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforSelf.jsp
... | ... | @@ -414,19 +414,6 @@ |
| 414 | 414 |
}); |
| 415 | 415 |
|
| 416 | 416 |
|
| 417 |
-// Show Html |
|
| 418 |
-function getAddrGroupListShow(jsonList) {
|
|
| 419 |
- var sHtml = ""; |
|
| 420 |
- sHtml += "<option value='NEW'>그룹추가</option>"; |
|
| 421 |
- sHtml += "<option value='0'>그룹미지정</option>"; |
|
| 422 |
- sHtml += "<option value='bookmark'>자주보내는 번호</option>"; |
|
| 423 |
- for (var j = 0; j < jsonList.length; j++) {
|
|
| 424 |
- sHtml += " <option value='" + $.trim(jsonList[j].addrGrpId) + "' />" + $.trim(jsonList[j].addrGrpNm) + "</option>"; |
|
| 425 |
- } |
|
| 426 |
- |
|
| 427 |
- $("#addrGrpIdInfo").html(sHtml);
|
|
| 428 |
-} |
|
| 429 |
- |
|
| 430 | 417 |
$(document).on('change', '#addrGrpIdInfo', function() {
|
| 431 | 418 |
if ($("#addrGrpIdInfo option:selected").val() != "NEW") {
|
| 432 | 419 |
$("#addrGrpNm").val(""); // 새그룹명 Clear;
|
--- src/main/webapp/js/web/addr/utils.js
+++ src/main/webapp/js/web/addr/utils.js
... | ... | @@ -14,11 +14,21 @@ |
| 14 | 14 |
var activeTab = $('#tbTabl .tab.active');
|
| 15 | 15 |
// data-tabul 값 가져오기 |
| 16 | 16 |
var tabulValue = activeTab.data('tabul');
|
| 17 |
- console.log('tabulValue : ',tabulValue);
|
|
| 18 | 17 |
|
| 19 | 18 |
return window['$' + tabulValue]; |
| 20 | 19 |
} |
| 21 | 20 |
|
| 21 |
+function fn_utils_getTabulatorNm(){
|
|
| 22 |
+ |
|
| 23 |
+ var activeTab = $('#tbTabl .tab.active');
|
|
| 24 |
+ // data-tabul 값 가져오기 |
|
| 25 |
+ var tabulValue = activeTab.data('tabul');
|
|
| 26 |
+ |
|
| 27 |
+ return tabulValue; |
|
| 28 |
+} |
|
| 29 |
+ |
|
| 30 |
+ |
|
| 31 |
+ |
|
| 22 | 32 |
function fn_utils_isEmpty(obj){
|
| 23 | 33 |
return obj == null || obj == ""; |
| 24 | 34 |
}(No newline at end of file) |
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?