주소록 > 엑셀입력 완료
This commit is contained in:
parent
ea9dba2146
commit
fc33fff87e
@ -5,6 +5,10 @@ import java.time.LocalDateTime;
|
||||
import org.springframework.http.HttpStatus;
|
||||
|
||||
import itn.let.mjo.pay.service.RefundVO;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -22,6 +26,9 @@ import itn.let.mjo.pay.service.RefundVO;
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@NoArgsConstructor
|
||||
public class StatusResponse {
|
||||
|
||||
private HttpStatus status;
|
||||
@ -61,51 +68,13 @@ public class StatusResponse {
|
||||
this.messageTemp = messageTemp;
|
||||
}
|
||||
|
||||
public HttpStatus getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(HttpStatus status) {
|
||||
@Builder
|
||||
public StatusResponse(HttpStatus status, String msg, Object data) {
|
||||
this.status = status;
|
||||
this.message = msg;
|
||||
this.object = data;
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public String getMessageTemp() {
|
||||
return messageTemp;
|
||||
}
|
||||
|
||||
public void setMessageTemp(String messageTemp) {
|
||||
this.messageTemp = messageTemp;
|
||||
}
|
||||
|
||||
public RefundVO getRefundVO() {
|
||||
return refundVO;
|
||||
}
|
||||
|
||||
public void setRefundVO(RefundVO refundVO) {
|
||||
this.refundVO = refundVO;
|
||||
}
|
||||
|
||||
public Object getObject() {
|
||||
return object;
|
||||
}
|
||||
|
||||
public void setObject(Object object) {
|
||||
this.object = object;
|
||||
}
|
||||
|
||||
public LocalDateTime getTimestamp() {
|
||||
return timestamp;
|
||||
}
|
||||
|
||||
public void setTimestamp(LocalDateTime timestamp) {
|
||||
this.timestamp = timestamp;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -2,6 +2,8 @@ package itn.let.mjo.addr.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import itn.let.mail.service.StatusResponse;
|
||||
|
||||
/**
|
||||
* 주소록 관리를 위한 서비스 인터페이스 클래스
|
||||
* @author ITN
|
||||
|
||||
@ -2,6 +2,8 @@ package itn.let.mjo.addr.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import itn.let.mail.service.StatusResponse;
|
||||
|
||||
/**
|
||||
* 주소록 관리를 위한 서비스 인터페이스 클래스
|
||||
* @author ITN
|
||||
@ -99,5 +101,6 @@ public interface AddrService {
|
||||
|
||||
// 주소록 대량등록 By Temp 주소록 All
|
||||
public int insertAddrByTempAddrAll(List<AddrVO> addrList, AddrVO addrVO) throws Exception;
|
||||
|
||||
|
||||
public StatusResponse addrMassInsertByTempAjax_advc(List<AddrVO> addrListVO, String userId) throws Exception;
|
||||
}
|
||||
|
||||
@ -1,12 +1,19 @@
|
||||
package itn.let.mjo.addr.service.impl;
|
||||
|
||||
import java.nio.charset.Charset;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
|
||||
import itn.let.mail.service.StatusResponse;
|
||||
import itn.let.mjo.addr.service.AddrGroupService;
|
||||
import itn.let.mjo.addr.service.AddrGroupVO;
|
||||
import itn.let.mjo.addr.service.AddrService;
|
||||
@ -37,6 +44,11 @@ public class AddrGroupServiceImpl extends EgovAbstractServiceImpl implements Ad
|
||||
|
||||
@Resource(name = "AddrDAO")
|
||||
private AddrDAO addrDAO;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public List<AddrGroupVO> selectAddrGroupList(AddrGroupVO addrGroupVO) throws Exception {
|
||||
return addrGroupDAO.selectAddrGroupList(addrGroupVO);
|
||||
@ -159,4 +171,6 @@ public class AddrGroupServiceImpl extends EgovAbstractServiceImpl implements Ad
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -1,18 +1,25 @@
|
||||
package itn.let.mjo.addr.service.impl;
|
||||
|
||||
import java.nio.charset.Charset;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
|
||||
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
|
||||
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
|
||||
import itn.com.cmm.LoginVO;
|
||||
import itn.let.mail.service.StatusResponse;
|
||||
import itn.let.mjo.addr.service.AddrGroupVO;
|
||||
import itn.let.mjo.addr.service.AddrService;
|
||||
import itn.let.mjo.addr.service.AddrTransHistVO;
|
||||
@ -44,10 +51,16 @@ public class AddrServiceImpl extends EgovAbstractServiceImpl implements AddrSer
|
||||
@Resource(name = "AddrTransHistDAO")
|
||||
private AddrTransHistDAO addrTransHistDAO;
|
||||
|
||||
|
||||
@Resource(name = "egovAddrTransHistIdGnrService")
|
||||
private EgovIdGnrService idgenAddrTransHistId;
|
||||
|
||||
|
||||
|
||||
private static final String PHONE_REGEX = "^(01[016789]-?\\d{3,4}-?\\d{4})$";
|
||||
private static final Pattern PHONE_PATTERN = Pattern.compile(PHONE_REGEX);
|
||||
private static final Charset EUC_KR = Charset.forName("EUC-KR");
|
||||
private static final int MAX_ADDR_CNT = 500000;
|
||||
|
||||
|
||||
public List<AddrVO> selectAddrList(AddrVO addrVO) throws Exception {
|
||||
return addrDAO.selectAddrList(addrVO);
|
||||
@ -366,5 +379,153 @@ public class AddrServiceImpl extends EgovAbstractServiceImpl implements AddrSer
|
||||
|
||||
return rtnVal;
|
||||
}
|
||||
|
||||
@Override
|
||||
public StatusResponse addrMassInsertByTempAjax_advc(List<AddrVO> addrListVO, String userId) throws Exception {
|
||||
|
||||
|
||||
|
||||
// data init
|
||||
// For-each loop
|
||||
for (AddrVO addr : addrListVO) { addr.setMberId(userId); }
|
||||
|
||||
|
||||
|
||||
// step1 현재 주소록 갯수 조회
|
||||
|
||||
//회원별 주소록 전체 갯수 조회
|
||||
int addrBefCnt = addrDAO.selectAddrTotalCount(addrListVO.get(0));
|
||||
int addrNewCnt = addrListVO.size(); //신규 추가할 주소록 갯수
|
||||
int sumAddrCnt = addrBefCnt + addrNewCnt;
|
||||
|
||||
// step1-1 총 갯수가 (주소록 갯수 + 신규 주소록)50만건 체크
|
||||
if(sumAddrCnt > MAX_ADDR_CNT) {
|
||||
return new StatusResponse(
|
||||
HttpStatus.BAD_REQUEST
|
||||
, "주소록은 총 50만개까지만 등록이 가능합니다."
|
||||
, LocalDateTime.now()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
// step2 신규 주소록 생성 및 북마크 체크
|
||||
// => AddrGrpId
|
||||
//
|
||||
if ("NEW".equals(addrListVO.get(0).getAddrGrpId())) {
|
||||
|
||||
AddrGroupVO addrGroupVO = new AddrGroupVO();
|
||||
addrGroupVO.setMberId(userId);
|
||||
addrGroupVO.setAddrGrpNm(addrListVO.get(0).getAddrGrpNm());
|
||||
// 정렬순서
|
||||
|
||||
int nextOrderNumber = addrGroupDAO.selectMaxOrderNumber(addrGroupVO);
|
||||
addrGroupVO.setGrpOrder(nextOrderNumber);
|
||||
|
||||
addrGroupDAO.insertAddrGroup(addrGroupVO);
|
||||
|
||||
// 신규 추가한 그룹아이디
|
||||
for (AddrVO addr : addrListVO) { addr.setAddrGrpId(addrGroupVO.getAddrGrpId()); }
|
||||
|
||||
}
|
||||
else if ("bookmark".equals(addrListVO.get(0).getAddrGrpId()))
|
||||
{
|
||||
for (AddrVO addr : addrListVO) { addr.setBookmark("Y"); addr.setAddrGrpId("0"); }
|
||||
}
|
||||
else
|
||||
{
|
||||
for (AddrVO addr : addrListVO) { addr.setBookmark("N"); }
|
||||
}
|
||||
|
||||
// step4-1 true
|
||||
// => 폰번호 빼고 바이트 체크해서 20byte만 짜르고 넣기
|
||||
// => 폰번호는 유효성 체크 하기
|
||||
|
||||
long startTime = System.currentTimeMillis();
|
||||
// 유효성 체크 및 하이픈 제거, 유효하지 않은 번호는 리스트에서 제거
|
||||
// 나머지 필드들 20byte (euc-kr) 체크 후 넘으면 자르기
|
||||
AtomicInteger invalid = new AtomicInteger(0); // 스레드-안전(thread-safe)하게 정수 값을 업데이트할 수 있는 기능을 제공
|
||||
addrListVO.removeIf(addr -> {
|
||||
String phoneNo = addr.getAddrPhoneNo();
|
||||
// phoneNo = phoneNo != null ? phoneNo.replaceAll("-", "") : "";
|
||||
// System.out.println("phoneNo : "+ phoneNo);
|
||||
if (isValidPhoneNumber(phoneNo)) {
|
||||
addr.setAddrPhoneNo(phoneNo); // 하이픈이 제거된 유효한 번호 설정
|
||||
trimFieldsBytes(addr); // 다른 필드들에 대한 20바이트 체크 및 자르기
|
||||
return false; // 유효한 번호는 제거하지 않음
|
||||
} else {
|
||||
// System.out.println(phoneNo + " is an invalid phone number. Removing from list.");
|
||||
invalid.getAndIncrement(); // 유효하지 않은 번호 개수 증가
|
||||
return true; // 유효하지 않은 번호는 제거
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
long endTime = System.currentTimeMillis();
|
||||
double executionTime = (endTime - startTime) / 1000.0;
|
||||
System.out.println(" number chk Execution time: " + executionTime + " seconds");
|
||||
|
||||
startTime = System.currentTimeMillis();
|
||||
System.out.println("addrListVO.size() : "+ addrListVO.size());
|
||||
|
||||
if(addrListVO.size() > 0) {
|
||||
// 등록
|
||||
addrDAO.insertAddrList(addrListVO);
|
||||
|
||||
}
|
||||
|
||||
endTime = System.currentTimeMillis();
|
||||
executionTime = (endTime - startTime) / 1000.0;
|
||||
System.out.println("INSERT Execution time: " + executionTime + " seconds");
|
||||
|
||||
|
||||
// 중복체크 dupliCnt
|
||||
|
||||
|
||||
|
||||
//
|
||||
String message = "저장에 성공했습니다.\n저장 : " + addrListVO.size() + "건"
|
||||
// +", 중복 : " + invalid.dupliCnt + "건"
|
||||
+", INERT 총 시간 : " + executionTime+ "초"
|
||||
+", 휴대폰번호 오류 : " + invalid.get() + "건";
|
||||
|
||||
return new StatusResponse(
|
||||
HttpStatus.OK
|
||||
, message
|
||||
// , ""
|
||||
, LocalDateTime.now());
|
||||
}
|
||||
|
||||
public static boolean isValidPhoneNumber(String phoneNo) {
|
||||
if (phoneNo == null || phoneNo.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
Matcher matcher = PHONE_PATTERN.matcher(phoneNo);
|
||||
return matcher.matches();
|
||||
}
|
||||
|
||||
|
||||
public static void trimFieldsBytes(AddrVO addr) {
|
||||
addr.setAddrInfo1(trimToBytes(addr.getAddrInfo1(), 20));
|
||||
addr.setAddrInfo2(trimToBytes(addr.getAddrInfo2(), 20));
|
||||
addr.setAddrInfo3(trimToBytes(addr.getAddrInfo3(), 20));
|
||||
addr.setAddrInfo4(trimToBytes(addr.getAddrInfo4(), 20));
|
||||
addr.setAddrComment(trimToBytes(addr.getAddrComment(), 250));
|
||||
addr.setAddrNm(trimToBytes(addr.getAddrNm(), 20));
|
||||
}
|
||||
|
||||
// maxBytes만큼 글자수 처리해서 리턴
|
||||
public static String trimToBytes(String str, int maxBytes) {
|
||||
if (str == null) {
|
||||
return null;
|
||||
}
|
||||
byte[] bytes = str.getBytes(EUC_KR);
|
||||
if (bytes.length <= maxBytes) {
|
||||
return str;
|
||||
}
|
||||
int len = maxBytes;
|
||||
while (len > 0 && bytes[len - 1] < 0) {
|
||||
len--; // 바이트 배열을 maxBytes로 자를 때, 잘못된 분할을 피하기 위해 문자 경계 확인
|
||||
}
|
||||
return new String(bytes, 0, len, EUC_KR);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,26 +1,25 @@
|
||||
package itn.let.mjo.addr.web;
|
||||
|
||||
import java.nio.charset.Charset;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
||||
|
||||
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
|
||||
import itn.com.cmm.EgovMessageSource;
|
||||
import itn.com.cmm.LoginVO;
|
||||
import itn.com.utl.fcc.service.EgovStringUtil;
|
||||
import itn.let.fax.admin.service.FaxStatVO;
|
||||
import itn.let.mail.service.StatusResponse;
|
||||
import itn.let.mjo.addr.service.AddrGroupService;
|
||||
import itn.let.mjo.addr.service.AddrGroupVO;
|
||||
@ -63,55 +62,31 @@ public class AddrRestController {
|
||||
* 주소록 대량등록 저장
|
||||
* @param searchVO
|
||||
* @param model
|
||||
* @return "/web/mjon/addr/addrMassInsertByTempAjax.do"
|
||||
* @return "/web/mjon/addr/addrMassInsertByTempAjax_advc.do"
|
||||
* @throws Exception
|
||||
*/
|
||||
@RequestMapping(value= {"/web/mjon/addr/addrMassInsertByTempAjax_advc.do"})
|
||||
public ResponseEntity<StatusResponse> addrMassInsertByTempAjax(@RequestBody List<AddrVO> addrListVO,
|
||||
RedirectAttributes redirectAttributes,
|
||||
ModelMap model) throws Exception{
|
||||
public ResponseEntity<StatusResponse> addrMassInsertByTempAjax_advc(@RequestBody List<AddrVO> addrListVO
|
||||
,ModelMap model) throws Exception{
|
||||
|
||||
|
||||
System.out.println("??");
|
||||
System.out.println("?? " + addrListVO.get(0).toString());
|
||||
|
||||
return ResponseEntity.ok().body(new StatusResponse(HttpStatus.OK, "", LocalDateTime.now()));
|
||||
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
|
||||
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
|
||||
|
||||
if(userId.equals("")) {
|
||||
return ResponseEntity.ok(
|
||||
new StatusResponse(HttpStatus.UNAUTHORIZED
|
||||
, "로그인을 하셔야 이용 가능합니다."
|
||||
, LocalDateTime.now()
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
return ResponseEntity.ok().body(addrService.addrMassInsertByTempAjax_advc(addrListVO, userId));
|
||||
}
|
||||
|
||||
/* 바이트 자르기
|
||||
UTF-8일 경우
|
||||
subStringBytes("블라블라블라라", 10, 3);
|
||||
EUC-KR일 경우
|
||||
subStringBytes("블라블라블라라", 10, 2);
|
||||
*/
|
||||
public String subStringBytes(String str, int byteLength, int sizePerLetter) {
|
||||
int retLength = 0;
|
||||
int tempSize = 0;
|
||||
int asc;
|
||||
if (str == null || "".equals(str) || "null".equals(str)) {
|
||||
str = "";
|
||||
}
|
||||
|
||||
int length = str.length();
|
||||
|
||||
for (int i = 1; i <= length; i++) {
|
||||
asc = (int) str.charAt(i - 1);
|
||||
if (asc > 127) {
|
||||
if (byteLength >= tempSize + sizePerLetter) {
|
||||
tempSize += sizePerLetter;
|
||||
retLength++;
|
||||
}
|
||||
} else {
|
||||
if (byteLength > tempSize) {
|
||||
tempSize++;
|
||||
retLength++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return str.substring(0, retLength);
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
|
||||
}
|
||||
@ -775,7 +775,7 @@
|
||||
</select>
|
||||
|
||||
<insert id="AddrDAO.insertAddrList" parameterClass="java.util.List">
|
||||
|
||||
/* AddrDAO.insertAddrList */
|
||||
INSERT INTO MJ_ADDR
|
||||
(
|
||||
MBER_ID,
|
||||
@ -790,9 +790,9 @@
|
||||
BOOKMARK,
|
||||
ADDR_COMMENT,
|
||||
FRST_REGISTER_ID
|
||||
)VALUES
|
||||
<iterate conjunction=",">
|
||||
(
|
||||
)
|
||||
<iterate prepend="VALUES" conjunction=",">
|
||||
(
|
||||
#[].mberId#,
|
||||
#[].addrGrpId#,
|
||||
#[].addrNm#,
|
||||
@ -805,8 +805,8 @@
|
||||
#[].bookmark#,
|
||||
#[].addrComment#,
|
||||
#[].frstRegisterId#
|
||||
)
|
||||
</iterate>
|
||||
)
|
||||
</iterate>
|
||||
|
||||
</insert>
|
||||
|
||||
|
||||
@ -4,11 +4,15 @@
|
||||
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
|
||||
|
||||
<script type="text/javascript">
|
||||
var currentTime = "${Instant.now().toEpochMilli()}";
|
||||
</script>
|
||||
|
||||
<script type="text/javascript" src="<c:url value='/publish/js/content.js'/>"></script>
|
||||
<script type="text/javascript" src="https://oss.sheetjs.com/sheetjs/xlsx.full.min.js"></script>
|
||||
<script type="text/javascript" src="<c:url value='/js/web/addr/init.js'/>"></script>
|
||||
<script type="text/javascript" src="<c:url value='/js/web/addr/event.js'/>"></script>
|
||||
<script type="text/javascript" src="<c:url value='/js/web/addr/utils.js'/>"></script>
|
||||
<script type="text/javascript" src="<c:url value='/js/web/addr/utils.js'/>?v=${currentTime}"></script>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
@ -274,7 +278,8 @@ $(document).on('click', '#btnAddrMassClose', function() {
|
||||
|
||||
// 대량등록 닫기
|
||||
function setAddrMassClose() {
|
||||
tableR.clearData();
|
||||
var $objTabul = fn_utils_getTabulator();
|
||||
$objTabul.clearData();
|
||||
$("#rowTotCnt").text(0); //총건수 수정
|
||||
$("#rowDupCnt").text(0); //중복건수 수정
|
||||
dupliPhoneDataRealList.length = 0; // 중복 휴대폰번호 초기화
|
||||
@ -296,7 +301,7 @@ function getAddrGroupDuplCheckAjax() {
|
||||
$.ajax({
|
||||
url : "<c:url value='/web/addr/getAddrGroupDuplCheckAjax.do' />",
|
||||
type : 'POST',
|
||||
data : {"addrGrpNm" : $("#addrGrpNm").val()},
|
||||
data : {"addrGrpNm" : $(tabluC+" #addrGrpNm").val()},
|
||||
dataType:'json',
|
||||
async: false, // 동기
|
||||
success : function(data, status){
|
||||
@ -331,7 +336,9 @@ function SetAddrMassSave(){
|
||||
// gMemoList = []; //메모
|
||||
|
||||
var $objTabul = fn_utils_getTabulator();
|
||||
|
||||
var tabulNm = fn_utils_getTabulatorNm();
|
||||
var tabluC = '.'+tabulNm
|
||||
|
||||
if($objTabul.getData().length < 1){
|
||||
alert("한 개 이상의 연락처를 입력하세요");
|
||||
return false;
|
||||
@ -341,7 +348,7 @@ function SetAddrMassSave(){
|
||||
// return false;
|
||||
// }
|
||||
|
||||
var selectMassVal = $("#addrGrpIdInfo option:selected").val();
|
||||
var selectMassVal = $(tabluC+" #addrGrpIdInfo option:selected").val();
|
||||
|
||||
var loginVO = '${LoginVO}';
|
||||
// if(loginVO == "" || loginVO == null){
|
||||
@ -349,18 +356,46 @@ function SetAddrMassSave(){
|
||||
alert("로그인 후 이용이 가능합니다.");
|
||||
return false;
|
||||
}
|
||||
else if ($("#addrGrpIdInfo option:selected").val() == "NEW"
|
||||
&& ($("#addrGrpNm").val() == ""
|
||||
|| $("#addrGrpNm").val() == null
|
||||
|| $("#addrGrpNm").val() == undefined)
|
||||
|
||||
// tableExcel 그룹의 select 요소들을 확인
|
||||
var isPhoneSelected = false;
|
||||
var isNameSelected = false;
|
||||
$('.adr_hd.select_adr_hd[data-group="'+tabulNm+'"] .field-selector').each(function() {
|
||||
var value = $(this).val();
|
||||
if (value === 'addrPhoneNo') {
|
||||
isPhoneSelected = true;
|
||||
} else if (value === 'addrNm') {
|
||||
isNameSelected = true;
|
||||
}
|
||||
|
||||
// 두 조건이 모두 충족되면 반복문 종료
|
||||
if (isPhoneSelected && isNameSelected) {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
if (!isPhoneSelected || !isNameSelected) {
|
||||
alert('휴대폰 또는 이름이 선택되지 않았습니다.');
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// 주소록이 새로생성이면 새로운 주소록명이 있는지 확인
|
||||
if ($(tabluC+" #addrGrpIdInfo option:selected").val() == "NEW"
|
||||
&& ($(tabluC+" #addrGrpNm").val() == ""
|
||||
|| $(tabluC+" #addrGrpNm").val() == null
|
||||
|| $(tabluC+" #addrGrpNm").val() == undefined)
|
||||
)
|
||||
{
|
||||
alert("저장할 그룹을 선택하거나 새 그룹명을 입력해주세요.");
|
||||
$(tabluC+" #addrGrpNm").focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
// 새 그룹명 중복체크
|
||||
if ($("#addrGrpIdInfo option:selected").val() == "NEW" && $("#addrGrpNm").val() != "") {
|
||||
if ($(tabluC+" #addrGrpIdInfo option:selected").val() == "NEW"
|
||||
&& $(tabluC+" #addrGrpNm").val() != "")
|
||||
{
|
||||
//주소록 중복체크
|
||||
if (getAddrGroupDuplCheckAjax() == false) {
|
||||
alert("중복된 그룹명입니다. 새 그룹명을 입력해주세요.");
|
||||
@ -368,44 +403,98 @@ function SetAddrMassSave(){
|
||||
}
|
||||
}
|
||||
|
||||
var commaSelectedData = numberWithCommas(selectedData.length);
|
||||
var confirmMsg = "저장하시겠습니까?\n이름 20byte, [*1*]~[*4*] 40byte, 메모 250byte 초과 글자는 절사됩니다.";
|
||||
// if (selectedData.length >= 10000) {
|
||||
// confirmMsg = "저장하시겠습니까?\n이름 20byte, [*1*]~[*4*] 40byte, 메모 250byte 초과 글자는 절사됩니다.\n1만건 이상 등록시 약 30초정도 소요됩니다.\n잠시만 기다려주세요.";
|
||||
// }
|
||||
if (confirm(confirmMsg)) {
|
||||
//로딩창 show
|
||||
$('.loading_layer').addClass('active');
|
||||
// $('.loading_layer').addClass('active');
|
||||
|
||||
setTimeout(setSenderList_advc, 1000);
|
||||
// setTimeout(setSenderList_advc, 1000);
|
||||
setSenderList_advc();
|
||||
}
|
||||
}
|
||||
|
||||
function setSenderList_advc(){
|
||||
|
||||
// tab에 해당하는 타블레이터 가져오기
|
||||
var $objTabul = fn_utils_getTabulator();
|
||||
var dataToSend = $objTabul.getData();
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "/web/mjon/addr/addrMassInsertByTempAjax_advc.do",
|
||||
data: JSON.stringify(dataToSend),
|
||||
dataType: 'json',
|
||||
contentType: 'application/json',
|
||||
async: true,
|
||||
success: function (data) {
|
||||
console.log('data : ', data);
|
||||
// alert(data.object.message);
|
||||
// if (data.object.result == 'success') {
|
||||
// location.reload();
|
||||
// }
|
||||
},
|
||||
error: function (e) {
|
||||
alert("ERROR : " + JSON.stringify(e));
|
||||
}
|
||||
});
|
||||
}
|
||||
var addrGrpIdInfo = $("#addrGrpIdInfo").val();
|
||||
var addrGrpNmInfo = $("#addrGrpNm").val();
|
||||
|
||||
var updateData = dataToSend.map(row => {
|
||||
row.addrGrpId = addrGrpIdInfo;
|
||||
row.addrGrpNm = addrGrpNmInfo;
|
||||
return row;
|
||||
});
|
||||
|
||||
console.log('updateData : ', updateData);
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "/web/mjon/addr/addrMassInsertByTempAjax_advc.do",
|
||||
data: JSON.stringify(updateData),
|
||||
dataType: 'json',
|
||||
contentType: 'application/json',
|
||||
async: true,
|
||||
success: function (data) {
|
||||
console.log('data : ', data);
|
||||
|
||||
|
||||
if (data.status == 'OK') {
|
||||
alert(data.message);
|
||||
// alert("저장에 성공했습니다.\n저장 : " + returnData.resultCnt + "건"
|
||||
// +", 중복 : " + returnData.dupliCnt + "건"
|
||||
// +", 휴대폰번호 오류 : " + returnData.errPhoneCnt + "건");
|
||||
|
||||
// 중복번호 Hide
|
||||
// $("#btnAddrMassDupli").hide();
|
||||
// $("#btnAddrMassSaveDupli").hide();
|
||||
|
||||
// 중복건이 있을경우
|
||||
|
||||
// if (returnData.dupliCnt > 0) {
|
||||
//alert(returnData.addrMassDupliList.length);
|
||||
|
||||
// 중복번호(해당 그룹) Show
|
||||
// $("#btnAddrMassSaveDupli").show();
|
||||
|
||||
// addrMassDupliSaveList = returnData.addrMassDupliList;
|
||||
//$("#btnAddrMassSaveDupli").trigger("click");
|
||||
// }
|
||||
|
||||
// 데이터 비우기
|
||||
SetClear($objTabul);
|
||||
|
||||
var selectMassVal = $("#addrGrpIdInfo option:selected").val();
|
||||
|
||||
// 주소록그룹 콤보박스 유지
|
||||
setTimeout(setSelectMassSetting, 500, selectMassVal);
|
||||
}
|
||||
else {
|
||||
alert("오류 알림 : " + returnData.msg);
|
||||
}
|
||||
},
|
||||
error: function (e) {
|
||||
//로딩창 hide
|
||||
$('.loading_layer').removeClass('active');
|
||||
|
||||
alert("저장에 실패하였습니다.");
|
||||
alert("ERROR : " + JSON.stringify(e));
|
||||
},
|
||||
beforeSend : function(xmlHttpRequest) {
|
||||
//로딩창 show
|
||||
$('.loading_layer').addClass('active');
|
||||
},
|
||||
complete : function(xhr, textStatus) {
|
||||
//로딩창 hide
|
||||
$('.loading_layer').removeClass('active');
|
||||
}
|
||||
});
|
||||
}
|
||||
/*
|
||||
function setSenderList() {
|
||||
var selectedData = tableR.getRows();
|
||||
for (var i=gArrRestartIndex; i < selectedData.length; i++) {
|
||||
@ -504,9 +593,9 @@ function setSenderList() {
|
||||
SetAddrMassSave_Step2();
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
//저장
|
||||
function SetAddrMassSave_Step2(){
|
||||
/* function SetAddrMassSave_Step2(){
|
||||
var form = document.addrMassForm;
|
||||
form.phoneList.value = gPhoneList;
|
||||
form.nameList.value = gNameList;
|
||||
@ -580,7 +669,7 @@ function SetAddrMassSave_Step2(){
|
||||
$('.loading_layer').removeClass('active');
|
||||
}
|
||||
});
|
||||
}
|
||||
} */
|
||||
|
||||
//주소록그룹 콤보박스 유지
|
||||
function setSelectMassSetting(selectMassVal) {
|
||||
@ -589,28 +678,30 @@ function setSelectMassSetting(selectMassVal) {
|
||||
|
||||
|
||||
//데이터 비우기
|
||||
function SetClear() {
|
||||
$("#addrGrpNm").val(""); // 새그룹명 Clear;
|
||||
function SetClear($objTabul) {
|
||||
|
||||
|
||||
var tabulNm = fn_utils_getTabulatorNm();
|
||||
var tabluC = '.'+tabulNm
|
||||
|
||||
$(tabluC+" #addrGrpNm").val(""); // 새그룹명 Clear;
|
||||
// 주소록 그룹정보 불러오기
|
||||
getAddrGroupList();
|
||||
|
||||
var data = tableR.getRows();
|
||||
if (data == null || data == "") {
|
||||
}
|
||||
else {
|
||||
tableR.clearData();
|
||||
$("#rowTotCnt").text(0); //총건수 수정
|
||||
$("#rowDupCnt").text(0); //중복건수 수정
|
||||
dupliPhoneDataRealList.length = 0; // 중복 휴대폰번호 초기화
|
||||
}
|
||||
$objTabul.clearData();
|
||||
$(tabluC+" #rowTotCnt").text(0); //총건수 수정
|
||||
$(tabluC+" #rowDupCnt").text(0); //중복건수 수정
|
||||
// dupliPhoneDataRealList.length = 0; // 중복 휴대폰번호 초기화
|
||||
}
|
||||
|
||||
// 주소 대량등록 버튼 클릭
|
||||
// AddrListAjax.jsp에서 호출
|
||||
$(document).on('click', '#btnAddrMassRegCall', function() {
|
||||
getAddrGroupList();
|
||||
console.log('??');
|
||||
});
|
||||
|
||||
|
||||
// 주소록 그룹정보 불러오기
|
||||
function getAddrGroupList() {
|
||||
$.ajax({
|
||||
@ -631,6 +722,9 @@ function getAddrGroupList() {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// 그룹데이터 노출
|
||||
function getAddrGroupListShow(jsonList) {
|
||||
@ -641,8 +735,10 @@ function getAddrGroupListShow(jsonList) {
|
||||
for (var j = 0; j < jsonList.length; j++) {
|
||||
sHtml += " <option value='" + $.trim(jsonList[j].addrGrpId) + "' />" + $.trim(jsonList[j].addrGrpNm) + "</option>";
|
||||
}
|
||||
|
||||
$("#addrGrpIdInfo").html(sHtml);
|
||||
|
||||
var tabulNm = fn_utils_getTabulatorNm();
|
||||
var tabluC = '.'+tabulNm
|
||||
$(tabluC+" #addrGrpIdInfo").html(sHtml);
|
||||
}
|
||||
|
||||
$(document).on('change', '#addrGrpIdInfo', function() {
|
||||
@ -747,6 +843,7 @@ function fn_tabToggle(tabNum){
|
||||
var tabId = '#tab'+tabNum;
|
||||
$('.tab_c').hide();
|
||||
$(tabId).show();
|
||||
getAddrGroupList();
|
||||
}
|
||||
|
||||
</script>
|
||||
@ -782,19 +879,19 @@ function fn_tabToggle(tabNum){
|
||||
<ul class="list_tab" id="tbTabl">
|
||||
<li class="tab active" data-tabul="tableExcel"><button type="button" onclick="popupTab(this,'1'); fn_tabToggle('1');">엑셀입력</button></li>
|
||||
<li class="tab" data-tabul="tableClip"><button type="button" onclick="popupTab(this,'2'); fn_tabToggle('2');">붙여넣기</button></li>
|
||||
<li class="tab" data-tabul="tableSelf"><button type="button" onclick="popupTab(this,'3'); fn_tabToggle('3');">붙여넣기</button></li>
|
||||
<li class="tab" data-tabul="tableSelf"><button type="button" onclick="popupTab(this,'3'); fn_tabToggle('3');">직접입력</button></li>
|
||||
</ul><!--// tab button -->
|
||||
</div>
|
||||
|
||||
|
||||
<div id="tab1" class="tab_c">
|
||||
<div id="tab1" class="tab_c tableExcel">
|
||||
<%@include file="/WEB-INF/jsp/web/addr/include/addrListforExcel.jsp" %>
|
||||
</div>
|
||||
<div id="tab2" class="tab_c" style="display: none;">
|
||||
<div id="tab2" class="tab_c tableClip" style="display: none;">
|
||||
<%@include file="/WEB-INF/jsp/web/addr/include/addrListforClipboard.jsp" %>
|
||||
</div>
|
||||
<!-- <div id="tab3" class="tab_c" style="display: none;"> -->
|
||||
<div id="tab3" class="tab_c" style="display: none;">
|
||||
<div id="tab3" class="tab_c tableSelf" style="display: none;">
|
||||
<%@include file="/WEB-INF/jsp/web/addr/include/addrListforSelf.jsp" %>
|
||||
</div>
|
||||
|
||||
|
||||
@ -392,30 +392,6 @@ $(document).ready(function(){
|
||||
});
|
||||
|
||||
|
||||
// Show Html
|
||||
function getAddrGroupListShow(jsonList) {
|
||||
var sHtml = "";
|
||||
sHtml += "<option value='NEW'>그룹추가</option>";
|
||||
sHtml += "<option value='0'>그룹미지정</option>";
|
||||
sHtml += "<option value='bookmark'>자주보내는 번호</option>";
|
||||
for (var j = 0; j < jsonList.length; j++) {
|
||||
sHtml += " <option value='" + $.trim(jsonList[j].addrGrpId) + "' />" + $.trim(jsonList[j].addrGrpNm) + "</option>";
|
||||
}
|
||||
|
||||
$("#addrGrpIdInfo").html(sHtml);
|
||||
}
|
||||
|
||||
$(document).on('change', '#addrGrpIdInfo', function() {
|
||||
if ($("#addrGrpIdInfo option:selected").val() != "NEW") {
|
||||
$("#addrGrpNm").val(""); // 새그룹명 Clear;
|
||||
}
|
||||
});
|
||||
|
||||
//#############################################################################################
|
||||
//파일 불러오기
|
||||
//#############################################################################################
|
||||
|
||||
|
||||
//체크박스 전체선택/해제
|
||||
$(document).on("click", "#chkAll", function(e) {
|
||||
var isChecked = $(this).is(":checked");
|
||||
|
||||
@ -622,67 +622,6 @@ function getAddrGroupDuplCheckAjax() {
|
||||
return isReturn;
|
||||
}
|
||||
|
||||
//주소록그룹 콤보박스 유지
|
||||
function setSelectMassSetting(selectMassVal) {
|
||||
$("#addrGrpIdInfo").val(selectMassVal).prop("selected", true);
|
||||
}
|
||||
|
||||
//데이터 비우기
|
||||
function SetClear() {
|
||||
$("#addrGrpNm").val(""); // 새그룹명 Clear;
|
||||
// 주소록 그룹정보 불러오기
|
||||
getAddrGroupList();
|
||||
|
||||
var data = $tableExcel.getRows();
|
||||
if (data == null || data == "") {
|
||||
}
|
||||
else {
|
||||
$tableExcel.clearData();
|
||||
$("#rowTotCnt").text(0); //총건수 수정
|
||||
$("#rowDupCnt").text(0); //중복건수 수정
|
||||
dupliPhoneDataRealList.length = 0; // 중복 휴대폰번호 초기화
|
||||
}
|
||||
}
|
||||
|
||||
// 주소록 그룹정보 불러오기
|
||||
function getAddrGroupList() {
|
||||
$.ajax({
|
||||
type : "POST",
|
||||
async : false,
|
||||
url : "/web/mjon/addr/addrGroupListAjax.do",
|
||||
data : {},
|
||||
dataType:'json',
|
||||
success : function(data) {
|
||||
//alert(JSON.stringify(data.addrGroupList));
|
||||
|
||||
// Show Html
|
||||
getAddrGroupListShow(data.addrGroupList);
|
||||
},
|
||||
error : function(xhr, status, error) {
|
||||
alert(error);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Show Html
|
||||
function getAddrGroupListShow(jsonList) {
|
||||
var sHtml = "";
|
||||
sHtml += "<option value='NEW'>그룹추가</option>";
|
||||
sHtml += "<option value='0'>그룹미지정</option>";
|
||||
sHtml += "<option value='bookmark'>자주보내는 번호</option>";
|
||||
for (var j = 0; j < jsonList.length; j++) {
|
||||
sHtml += " <option value='" + $.trim(jsonList[j].addrGrpId) + "' />" + $.trim(jsonList[j].addrGrpNm) + "</option>";
|
||||
}
|
||||
|
||||
$("#addrGrpIdInfo").html(sHtml);
|
||||
}
|
||||
|
||||
$(document).on('change', '#addrGrpIdInfo', function() {
|
||||
if ($("#addrGrpIdInfo option:selected").val() != "NEW") {
|
||||
$("#addrGrpNm").val(""); // 새그룹명 Clear;
|
||||
}
|
||||
});
|
||||
|
||||
//#############################################################################################
|
||||
//파일 불러오기
|
||||
|
||||
@ -414,19 +414,6 @@ $(document).ready(function(){
|
||||
});
|
||||
|
||||
|
||||
// Show Html
|
||||
function getAddrGroupListShow(jsonList) {
|
||||
var sHtml = "";
|
||||
sHtml += "<option value='NEW'>그룹추가</option>";
|
||||
sHtml += "<option value='0'>그룹미지정</option>";
|
||||
sHtml += "<option value='bookmark'>자주보내는 번호</option>";
|
||||
for (var j = 0; j < jsonList.length; j++) {
|
||||
sHtml += " <option value='" + $.trim(jsonList[j].addrGrpId) + "' />" + $.trim(jsonList[j].addrGrpNm) + "</option>";
|
||||
}
|
||||
|
||||
$("#addrGrpIdInfo").html(sHtml);
|
||||
}
|
||||
|
||||
$(document).on('change', '#addrGrpIdInfo', function() {
|
||||
if ($("#addrGrpIdInfo option:selected").val() != "NEW") {
|
||||
$("#addrGrpNm").val(""); // 새그룹명 Clear;
|
||||
|
||||
@ -14,11 +14,21 @@ function fn_utils_getTabulator(){
|
||||
var activeTab = $('#tbTabl .tab.active');
|
||||
// data-tabul 값 가져오기
|
||||
var tabulValue = activeTab.data('tabul');
|
||||
console.log('tabulValue : ',tabulValue);
|
||||
|
||||
return window['$' + tabulValue];
|
||||
}
|
||||
|
||||
function fn_utils_getTabulatorNm(){
|
||||
|
||||
var activeTab = $('#tbTabl .tab.active');
|
||||
// data-tabul 값 가져오기
|
||||
var tabulValue = activeTab.data('tabul');
|
||||
|
||||
return tabulValue;
|
||||
}
|
||||
|
||||
|
||||
|
||||
function fn_utils_isEmpty(obj){
|
||||
return obj == null || obj == "";
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user