팩스 주소록 등록 속도개선
This commit is contained in:
parent
43fd87bf01
commit
319445f483
@ -35,6 +35,11 @@ public class FaxAddrVO extends ComDefaultVO{
|
||||
|
||||
private String[] excelDownTitles;
|
||||
|
||||
// 주소록 등록 batch 몇번째인지 확인
|
||||
private int batchStart;
|
||||
//
|
||||
private int dataTotCount;
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
private List addrIdList;
|
||||
|
||||
@ -286,6 +291,24 @@ public class FaxAddrVO extends ComDefaultVO{
|
||||
public void setMoveAddrAllFlag(String moveAddrAllFlag) {
|
||||
this.moveAddrAllFlag = moveAddrAllFlag;
|
||||
}
|
||||
|
||||
|
||||
public int getBatchStart() {
|
||||
return batchStart;
|
||||
}
|
||||
|
||||
public void setBatchStart(int batchStart) {
|
||||
this.batchStart = batchStart;
|
||||
}
|
||||
|
||||
|
||||
public int getDataTotCount() {
|
||||
return dataTotCount;
|
||||
}
|
||||
|
||||
public void setDataTotCount(int dataTotCount) {
|
||||
this.dataTotCount = dataTotCount;
|
||||
}
|
||||
|
||||
public String getFieldValue(String field) {
|
||||
if("addrPhoneNo".equals(field)) {
|
||||
|
||||
@ -48,7 +48,6 @@ public class FaxAddrServiceImpl extends EgovAbstractServiceImpl implements FaxAd
|
||||
|
||||
private static final String FAX_REGEX = "^(02\\d|03[1-3]|04[1-4]|05[1-5]|06[1-4]|030|050|060|070|080|1\\d{2})$";
|
||||
|
||||
|
||||
private static final Pattern FAX_PATTERN = Pattern.compile(FAX_REGEX);
|
||||
|
||||
private static final Charset EUC_KR = Charset.forName("EUC-KR");
|
||||
@ -393,24 +392,26 @@ public class FaxAddrServiceImpl extends EgovAbstractServiceImpl implements FaxAd
|
||||
}
|
||||
|
||||
// step1 현재 주소록 갯수 조회
|
||||
|
||||
// step1-1 회원별 주소록 전체 갯수 조회
|
||||
int faxAddrBefCnt = faxAddrDAO.selectFaxAddrTotalCount(faxAddrListVO.get(0));
|
||||
int faxAddrNewCnt = faxAddrListVO.size(); //신규 추가할 주소록 갯수
|
||||
int sumFaxAddrCnt = faxAddrBefCnt + faxAddrNewCnt;
|
||||
|
||||
System.out.println("faxAddrListVO.size() : "+ faxAddrListVO.size());
|
||||
|
||||
// step1-2 총 갯수가 (주소록 갯수 + 신규 주소록)1000만건 체크
|
||||
if(sumFaxAddrCnt > MAX_FAX_ADDR_CNT) {
|
||||
return new StatusResponse(
|
||||
HttpStatus.BAD_REQUEST
|
||||
, "주소록은 총 100만개까지만 등록이 가능합니다."
|
||||
, LocalDateTime.now()
|
||||
);
|
||||
// 배치 처음 돌때만 실행
|
||||
if(faxAddrListVO.get(0).getBatchStart() < 1) {
|
||||
|
||||
// step1-1 회원별 주소록 전체 갯수 조회
|
||||
int faxAddrBefCnt = faxAddrDAO.selectFaxAddrTotalCount(faxAddrListVO.get(0));
|
||||
int faxAddrNewCnt = faxAddrListVO.get(0).getDataTotCount(); //신규 추가할 주소록 갯수
|
||||
int sumFaxAddrCnt = faxAddrBefCnt + faxAddrNewCnt;
|
||||
|
||||
System.out.println("faxAddrListVO.size() : "+ faxAddrListVO.size());
|
||||
|
||||
// step1-2 총 갯수가 (주소록 갯수 + 신규 주소록)1000만건 체크
|
||||
if(sumFaxAddrCnt > MAX_FAX_ADDR_CNT) {
|
||||
return new StatusResponse(
|
||||
HttpStatus.BAD_REQUEST
|
||||
, "주소록은 총 100만개까지만 등록이 가능합니다."
|
||||
, LocalDateTime.now()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// step3
|
||||
// => 팩스번호 빼고 바이트 체크해서 20byte만 짜르고 넣기
|
||||
// => 팩스번호는 유효성 체크 하기
|
||||
@ -419,17 +420,22 @@ public class FaxAddrServiceImpl extends EgovAbstractServiceImpl implements FaxAd
|
||||
// 유효성 체크 및 하이픈 제거, 유효하지 않은 번호는 리스트에서 제거
|
||||
// 나머지 필드들 20byte (euc-kr) 체크 후 넘으면 자르기
|
||||
AtomicInteger invalid = new AtomicInteger(0); // 스레드-안전(thread-safe)하게 정수 값을 업데이트할 수 있는 기능을 제공
|
||||
faxAddrListVO.removeIf(faxAddr -> {
|
||||
String phoneNo = faxAddr.getAddrPhoneNo();
|
||||
|
||||
// log.info(" ++ before faxAddrListVO.size() :: [{}]", faxAddrListVO.size());
|
||||
|
||||
/*faxAddrListVO.removeIf(faxAddr -> {
|
||||
String phoneNo = faxAddr.getAddrPhoneNo().replaceAll("[^0-9]", "");
|
||||
if (isValidFaxNumber(phoneNo)) {
|
||||
faxAddr.setAddrPhoneNo(phoneNo); // 하이픈이 제거된 유효한 번호 설정
|
||||
trimFieldsBytes(faxAddr); // 다른 필드들에 대한 20바이트 체크 및 자르기
|
||||
return false; // 유효한 번호는 제거하지 않음
|
||||
} else{
|
||||
System.out.println(" + else phoneNo : "+ phoneNo);
|
||||
invalid.getAndIncrement(); // 유효하지 않은 번호 개수 증가
|
||||
return true; // 유효하지 않은 번호는 제거
|
||||
}
|
||||
});
|
||||
});*/
|
||||
// log.info(" ++ after faxAddrListVO.size() :: [{}]", faxAddrListVO.size());
|
||||
|
||||
long endTime = System.currentTimeMillis();
|
||||
double executionTime = (endTime - startTime) / 1000.0;
|
||||
@ -535,7 +541,7 @@ public class FaxAddrServiceImpl extends EgovAbstractServiceImpl implements FaxAd
|
||||
return false;
|
||||
}
|
||||
// 앞 3자리 추출
|
||||
String subNumber = faxNo.length() >= 3 ? faxNo.substring(0, 3) : faxNo;
|
||||
String subNumber = faxNo.substring(0, 3);
|
||||
Matcher matcher = FAX_PATTERN.matcher(subNumber);
|
||||
return matcher.matches();
|
||||
}
|
||||
|
||||
@ -5,6 +5,7 @@ import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.apache.commons.vfs2.util.DelegatingFileSystemOptionsBuilder;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.ui.ModelMap;
|
||||
@ -74,6 +75,7 @@ public class FaxAddrRestController {
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
return ResponseEntity.ok().body(faxAddrService.faxAddrMassInsertByTempAjax_advc(faxAddrListVO, userId));
|
||||
}
|
||||
}
|
||||
@ -389,7 +389,7 @@ function setSenderList_advc(){
|
||||
|
||||
var $objTabul = fn_utils_getTabulator();
|
||||
var dataToSend = $objTabul.getData();
|
||||
console.log('dataToSend : ', dataToSend);
|
||||
var dataTotCount = $objTabul.getDataCount(); // 총 갯수
|
||||
var addrGrpIdInfo = $(tabluC+" #addrGrpIdInfo option:selected").val();
|
||||
var addrGrpNmInfo = $(tabluC+" #addrGrpNm").val();
|
||||
|
||||
@ -411,6 +411,8 @@ function setSenderList_advc(){
|
||||
var updateData = batchData.map(row => {
|
||||
row.addrGrpId = addrGrpIdInfo;
|
||||
row.addrGrpNm = addrGrpNmInfo;
|
||||
row.batchStart = start;
|
||||
row.dataTotCount = dataTotCount;
|
||||
return row;
|
||||
});
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user