선거문자 20건 대량 등록 오류 수정
@4c280d3bf07c05138c5e28d134efa95f8492e8fe
--- src/main/java/itn/let/mjo/msgcampain/service/impl/MjonCandidateServiceImpl.java
+++ src/main/java/itn/let/mjo/msgcampain/service/impl/MjonCandidateServiceImpl.java
... | ... | @@ -69,7 +69,56 @@ |
| 69 | 69 |
|
| 70 | 70 |
} |
| 71 | 71 |
|
| 72 |
- resultCnt = mjonCandidateDAO.insertCandidateTWCallToData(mjonCandidateTWVO); |
|
| 72 |
+ int msgListCnt = mjonCandidateTWVO.size(); |
|
| 73 |
+ |
|
| 74 |
+ if(msgListCnt > 30000) {
|
|
| 75 |
+ |
|
| 76 |
+ List<MjonCandidateTWVO> mjonCandidateTwVO = new ArrayList<MjonCandidateTWVO>(); |
|
| 77 |
+ int maxRow = 0; |
|
| 78 |
+ for(MjonCandidateTWVO tmpVO : mjonCandidateTWVO) {
|
|
| 79 |
+ |
|
| 80 |
+ MjonCandidateTWVO tmpCandidateTwVO = new MjonCandidateTWVO(); |
|
| 81 |
+ |
|
| 82 |
+ tmpCandidateTwVO.setMberId(tmpVO.getMberId()); |
|
| 83 |
+ tmpCandidateTwVO.setCallTo(tmpVO.getCallTo()); |
|
| 84 |
+ tmpCandidateTwVO.setFrstRegisterId(tmpVO.getMberId()); |
|
| 85 |
+ tmpCandidateTwVO.setLastUpdusrId(tmpVO.getMberId()); |
|
| 86 |
+ tmpCandidateTwVO.setCallSeq(tmpVO.getCallSeq()); |
|
| 87 |
+ |
|
| 88 |
+ mjonCandidateTwVO.add(tmpCandidateTwVO); |
|
| 89 |
+ |
|
| 90 |
+ /* |
|
| 91 |
+ * 2024.01.25 우영두 변경 |
|
| 92 |
+ * 10000건씩 나눠서 디비에 입력해주도록 처리함 |
|
| 93 |
+ * 10만건 이상을 한번에 쿼리로 입력하면 socket 용량 초과로 디비에서 처리를 못하는 부분이 있어서 변경함. |
|
| 94 |
+ * |
|
| 95 |
+ * */ |
|
| 96 |
+ if(maxRow == 10000) {
|
|
| 97 |
+ |
|
| 98 |
+ int resultTWCnt = mjonCandidateDAO.insertCandidateTWCallToData(mjonCandidateTwVO); |
|
| 99 |
+ |
|
| 100 |
+ resultCnt += resultTWCnt; |
|
| 101 |
+ maxRow = 0; |
|
| 102 |
+ mjonCandidateTwVO.clear(); |
|
| 103 |
+ |
|
| 104 |
+ }else {
|
|
| 105 |
+ |
|
| 106 |
+ maxRow++; |
|
| 107 |
+ |
|
| 108 |
+ } |
|
| 109 |
+ |
|
| 110 |
+ } |
|
| 111 |
+ |
|
| 112 |
+ int resultLastCnt = mjonCandidateDAO.insertCandidateTWCallToData(mjonCandidateTwVO); |
|
| 113 |
+ |
|
| 114 |
+ resultCnt += resultLastCnt; |
|
| 115 |
+ |
|
| 116 |
+ }else {
|
|
| 117 |
+ |
|
| 118 |
+ resultCnt = mjonCandidateDAO.insertCandidateTWCallToData(mjonCandidateTWVO); |
|
| 119 |
+ |
|
| 120 |
+ } |
|
| 121 |
+ |
|
| 73 | 122 |
|
| 74 | 123 |
} catch (Exception e) {
|
| 75 | 124 |
System.out.println("insertCandidateTWCallToData Service Imple Error!!! " + e);
|
--- src/main/java/itn/let/mjo/msgcampain/web/MjonMsgCampainTWDataController.java
+++ src/main/java/itn/let/mjo/msgcampain/web/MjonMsgCampainTWDataController.java
... | ... | @@ -11,6 +11,7 @@ |
| 11 | 11 |
import java.util.Date; |
| 12 | 12 |
import java.util.HashMap; |
| 13 | 13 |
import java.util.List; |
| 14 |
+import java.util.stream.Collectors; |
|
| 14 | 15 |
|
| 15 | 16 |
import javax.annotation.Resource; |
| 16 | 17 |
import javax.servlet.http.HttpServletRequest; |
... | ... | @@ -635,28 +636,37 @@ |
| 635 | 636 |
} |
| 636 | 637 |
try {
|
| 637 | 638 |
|
| 639 |
+ /* |
|
| 640 |
+ * 2024.01.25 우영두 성능 개선 |
|
| 641 |
+ * 데이터수가 10만건이 넘는 상황일 경우 중복제거 및 데이터 처리 Loop 문 최소화 |
|
| 642 |
+ * |
|
| 643 |
+ * */ |
|
| 638 | 644 |
List<String> callToList = new ArrayList<String>(); |
| 639 |
- int totRowDataCnt = 0; |
|
| 645 |
+ int totRowDataCnt = mjonCandidateTWVO.getCallToArr().length; |
|
| 640 | 646 |
|
| 641 |
- for(String callTo : mjonCandidateTWVO.getCallToArr()) {
|
|
| 647 |
+ /*for(String callTo : mjonCandidateTWVO.getCallToArr()) {
|
|
| 642 | 648 |
|
| 643 | 649 |
callToList.add(callTo); |
| 644 | 650 |
totRowDataCnt++; |
| 645 | 651 |
|
| 646 |
- } |
|
| 652 |
+ }*/ |
|
| 653 |
+ |
|
| 654 |
+ //전달받은 수신목록 중복 제거 |
|
| 655 |
+ callToList = Arrays.asList(mjonCandidateTWVO.getCallToArr()); |
|
| 656 |
+ callToList = callToList.stream().distinct().collect(Collectors.toList()); |
|
| 647 | 657 |
|
| 648 | 658 |
//수신자 목록 중복 체크 및 디비화 처리 |
| 649 |
- List<String> dupCallToList = MJUtil.getDuplicateList(callToList); |
|
| 659 |
+ //List<String> dupCallToList = MJUtil.getDuplicateList(callToList); |
|
| 650 | 660 |
|
| 651 |
- String dupCallCnt = Integer.toString(totRowDataCnt - dupCallToList.size()); |
|
| 652 |
- |
|
| 661 |
+ String dupCallCnt = Integer.toString(totRowDataCnt - callToList.size()); |
|
| 662 |
+ //System.out.println("++++++++++++++++++ dupCallCnt ::: "+dupCallCnt);
|
|
| 653 | 663 |
//입력되어있는 데이터의 마지막 순번(call_seq)을 조회해 온다. |
| 654 | 664 |
int maxCallSeq = mjonCandidateService.selectCandidateTWMaxCallSeq(userId); |
| 655 | 665 |
maxCallSeq += 1;//마지막 순번에 1을 더해서 다음 순번을 지정해준다. |
| 656 | 666 |
|
| 657 | 667 |
List<MjonCandidateTWVO> mjonCandidateTwVO = new ArrayList<MjonCandidateTWVO>(); |
| 658 | 668 |
|
| 659 |
- for(String callTo : dupCallToList) {
|
|
| 669 |
+ for(String callTo : callToList) {
|
|
| 660 | 670 |
|
| 661 | 671 |
MjonCandidateTWVO tmpCandidateTwVO = new MjonCandidateTWVO(); |
| 662 | 672 |
|
--- src/main/webapp/WEB-INF/jsp/web/msgcampain/tw/MsgTWDataSMLView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgcampain/tw/MsgTWDataSMLView.jsp
... | ... | @@ -283,8 +283,9 @@ |
| 283 | 283 |
function addTWCallToInfo(){
|
| 284 | 284 |
|
| 285 | 285 |
var callSeq = $("#callSeq").val();
|
| 286 |
- var sendData = $(document.callToForm).serializeArray(); |
|
| 287 |
- $("#twCallToList").load("/web/mjon/msgcampain/selectMsgTWCallToListAjax.do", sendData ,function(response, status, xhr){
|
|
| 286 |
+ var pageIndex = $("#callToForm #pageIndex").val();
|
|
| 287 |
+ //var sendData = $(document.callToForm).serializeArray(); |
|
| 288 |
+ $("#twCallToList").load("/web/mjon/msgcampain/selectMsgTWCallToListAjax.do", {"callSeq":callSeq, "pageIndex":pageIndex} ,function(response, status, xhr){
|
|
| 288 | 289 |
|
| 289 | 290 |
$(document).ready(function () {
|
| 290 | 291 |
$(".receipt_number_table_wrap .tbody_ul").selectable({
|
... | ... | @@ -2639,7 +2640,6 @@ |
| 2639 | 2640 |
} |
| 2640 | 2641 |
|
| 2641 | 2642 |
//선택한 데이터 받는사람 리스트에 추가해 주기 |
| 2642 |
- //addPhoneInfo(tableData); |
|
| 2643 | 2643 |
form.callToArr.value = callToArr; |
| 2644 | 2644 |
var data = new FormData(form); |
| 2645 | 2645 |
var url = "/web/mjon/msgcampain/insertMyAddrTWCallToAjax.do"; |
... | ... | @@ -2676,10 +2676,9 @@ |
| 2676 | 2676 |
alert("추가 주소록 리스트 중 중복 연락처 " + dupCallCnt + "건은 제외되었습니다.");
|
| 2677 | 2677 |
} |
| 2678 | 2678 |
|
| 2679 |
- |
|
| 2680 | 2679 |
if(Number(callSeq) > 0){
|
| 2681 | 2680 |
$("#callSeq").val(callSeq);
|
| 2682 |
- |
|
| 2681 |
+ $("#callToForm #pageIndex").val("1");
|
|
| 2683 | 2682 |
//추가된 수신목록 20건 불러오기 |
| 2684 | 2683 |
addTWCallToInfo(); |
| 2685 | 2684 |
} |
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?