선거문자 20건 대량 등록 오류 수정

This commit is contained in:
rosewiper 2024-01-25 15:50:52 +09:00
parent b754eab9df
commit 4c280d3bf0
3 changed files with 71 additions and 13 deletions

View File

@ -69,7 +69,56 @@ public class MjonCandidateServiceImpl extends EgovAbstractServiceImpl implement
}
resultCnt = mjonCandidateDAO.insertCandidateTWCallToData(mjonCandidateTWVO);
int msgListCnt = mjonCandidateTWVO.size();
if(msgListCnt > 30000) {
List<MjonCandidateTWVO> mjonCandidateTwVO = new ArrayList<MjonCandidateTWVO>();
int maxRow = 0;
for(MjonCandidateTWVO tmpVO : mjonCandidateTWVO) {
MjonCandidateTWVO tmpCandidateTwVO = new MjonCandidateTWVO();
tmpCandidateTwVO.setMberId(tmpVO.getMberId());
tmpCandidateTwVO.setCallTo(tmpVO.getCallTo());
tmpCandidateTwVO.setFrstRegisterId(tmpVO.getMberId());
tmpCandidateTwVO.setLastUpdusrId(tmpVO.getMberId());
tmpCandidateTwVO.setCallSeq(tmpVO.getCallSeq());
mjonCandidateTwVO.add(tmpCandidateTwVO);
/*
* 2024.01.25 우영두 변경
* 10000건씩 나눠서 디비에 입력해주도록 처리함
* 10만건 이상을 한번에 쿼리로 입력하면 socket 용량 초과로 디비에서 처리를 못하는 부분이 있어서 변경함.
*
* */
if(maxRow == 10000) {
int resultTWCnt = mjonCandidateDAO.insertCandidateTWCallToData(mjonCandidateTwVO);
resultCnt += resultTWCnt;
maxRow = 0;
mjonCandidateTwVO.clear();
}else {
maxRow++;
}
}
int resultLastCnt = mjonCandidateDAO.insertCandidateTWCallToData(mjonCandidateTwVO);
resultCnt += resultLastCnt;
}else {
resultCnt = mjonCandidateDAO.insertCandidateTWCallToData(mjonCandidateTWVO);
}
} catch (Exception e) {
System.out.println("insertCandidateTWCallToData Service Imple Error!!! " + e);

View File

@ -11,6 +11,7 @@ import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@ -635,28 +636,37 @@ public class MjonMsgCampainTWDataController {
}
try {
/*
* 2024.01.25 우영두 성능 개선
* 데이터수가 10만건이 넘는 상황일 경우 중복제거 데이터 처리 Loop 최소화
*
* */
List<String> callToList = new ArrayList<String>();
int totRowDataCnt = 0;
int totRowDataCnt = mjonCandidateTWVO.getCallToArr().length;
for(String callTo : mjonCandidateTWVO.getCallToArr()) {
/*for(String callTo : mjonCandidateTWVO.getCallToArr()) {
callToList.add(callTo);
totRowDataCnt++;
}
}*/
//전달받은 수신목록 중복 제거
callToList = Arrays.asList(mjonCandidateTWVO.getCallToArr());
callToList = callToList.stream().distinct().collect(Collectors.toList());
//수신자 목록 중복 체크 디비화 처리
List<String> dupCallToList = MJUtil.getDuplicateList(callToList);
String dupCallCnt = Integer.toString(totRowDataCnt - dupCallToList.size());
//List<String> dupCallToList = MJUtil.getDuplicateList(callToList);
String dupCallCnt = Integer.toString(totRowDataCnt - callToList.size());
//System.out.println("++++++++++++++++++ dupCallCnt ::: "+dupCallCnt);
//입력되어있는 데이터의 마지막 순번(call_seq) 조회해 온다.
int maxCallSeq = mjonCandidateService.selectCandidateTWMaxCallSeq(userId);
maxCallSeq += 1;//마지막 순번에 1을 더해서 다음 순번을 지정해준다.
List<MjonCandidateTWVO> mjonCandidateTwVO = new ArrayList<MjonCandidateTWVO>();
for(String callTo : dupCallToList) {
for(String callTo : callToList) {
MjonCandidateTWVO tmpCandidateTwVO = new MjonCandidateTWVO();

View File

@ -283,8 +283,9 @@ $("#excelAdd").click(function(){
function addTWCallToInfo(){
var callSeq = $("#callSeq").val();
var sendData = $(document.callToForm).serializeArray();
$("#twCallToList").load("/web/mjon/msgcampain/selectMsgTWCallToListAjax.do", sendData ,function(response, status, xhr){
var pageIndex = $("#callToForm #pageIndex").val();
//var sendData = $(document.callToForm).serializeArray();
$("#twCallToList").load("/web/mjon/msgcampain/selectMsgTWCallToListAjax.do", {"callSeq":callSeq, "pageIndex":pageIndex} ,function(response, status, xhr){
$(document).ready(function () {
$(".receipt_number_table_wrap .tbody_ul").selectable({
@ -2639,7 +2640,6 @@ function addrToList(){
}
//선택한 데이터 받는사람 리스트에 추가해 주기
//addPhoneInfo(tableData);
form.callToArr.value = callToArr;
var data = new FormData(form);
var url = "/web/mjon/msgcampain/insertMyAddrTWCallToAjax.do";
@ -2676,10 +2676,9 @@ function addrToList(){
alert("추가 주소록 리스트 중 중복 연락처 " + dupCallCnt + "건은 제외되었습니다.");
}
if(Number(callSeq) > 0){
$("#callSeq").val(callSeq);
$("#callToForm #pageIndex").val("1");
//추가된 수신목록 20건 불러오기
addTWCallToInfo();
}