- 알림톡 발송결과 탭 페이징 이어지도록 수정
- 리스트 쿼리 성능 개선
This commit is contained in:
parent
46d63224d0
commit
36290f8dd8
@ -126,8 +126,13 @@ public class KakaoSentDAO extends EgovAbstractDAO {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//발송 관리 문자발송 내용 상세보기 팝업[그룹]
|
//발송 관리 문자발송 내용 상세보기 팝업[그룹]
|
||||||
public MjonKakaoATVO selectKakaoSentDetailViewPhoneAjax(MjonKakaoATVO KakaoSentVO) throws Exception{
|
public MjonKakaoATVO selectKakaoSentDetailViewPhoneAjax(MjonKakaoATVO KakaoSentVO) throws Exception{
|
||||||
return (MjonKakaoATVO) select("KakaoSentDAO.selectKakaoSentDetailViewPhoneAjax", KakaoSentVO);
|
return (MjonKakaoATVO) select("KakaoSentDAO.selectKakaoSentDetailViewPhoneAjax", KakaoSentVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public List<KakaoSentVO> selectAllKakaoSentListExcel_advc(KakaoSentVO kakaoSentVO) throws Exception{
|
||||||
|
return (List<KakaoSentVO>) list("KakaoSentDAO.selectAllKakaoSentListExcel_advc",kakaoSentVO);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -302,10 +302,14 @@ public class KakaoSentServiceImpl extends EgovAbstractServiceImpl implements Ka
|
|||||||
result.setKakaoResendSuccCount(eachCnt.getKakaoResendSuccCount());
|
result.setKakaoResendSuccCount(eachCnt.getKakaoResendSuccCount());
|
||||||
result.setKakaoResendFailCount(eachCnt.getKakaoResendFailCount());
|
result.setKakaoResendFailCount(eachCnt.getKakaoResendFailCount());
|
||||||
|
|
||||||
|
result.setMsgGroupCnt(
|
||||||
|
Integer.valueOf(result.getSuccessCount() + result.getWaitCount() + result.getFailCount()).toString()
|
||||||
|
);
|
||||||
|
|
||||||
//완료상태 시작
|
//완료상태 시작
|
||||||
result = this.codeProc(result);
|
result = this.codeProc(result);
|
||||||
|
|
||||||
|
|
||||||
//완료상태 끝
|
//완료상태 끝
|
||||||
//=======================================================
|
//=======================================================
|
||||||
|
|
||||||
@ -470,7 +474,7 @@ public class KakaoSentServiceImpl extends EgovAbstractServiceImpl implements Ka
|
|||||||
}
|
}
|
||||||
|
|
||||||
//예약 관리 리스트 불러오기
|
//예약 관리 리스트 불러오기
|
||||||
List<KakaoSentVO> resultList = kakaoSentDAO.selectAllKakaoSentList_advc(kakaoSentVO);
|
List<KakaoSentVO> resultList = kakaoSentDAO.selectAllKakaoSentListExcel_advc(kakaoSentVO);
|
||||||
|
|
||||||
// long startTime = System.nanoTime(); // 시작 시간 측정
|
// long startTime = System.nanoTime(); // 시작 시간 측정
|
||||||
// resultAllSentList = makeDetailFunction(resultAllSentList);
|
// resultAllSentList = makeDetailFunction(resultAllSentList);
|
||||||
|
|||||||
@ -1354,6 +1354,111 @@
|
|||||||
|
|
||||||
<!-- 전체 발송결과 조회 (그룹별)-->
|
<!-- 전체 발송결과 조회 (그룹별)-->
|
||||||
<select id="KakaoSentDAO.selectAllKakaoSentList_advc" parameterClass="kakaoSentVO" resultClass="kakaoSentVO">
|
<select id="KakaoSentDAO.selectAllKakaoSentList_advc" parameterClass="kakaoSentVO" resultClass="kakaoSentVO">
|
||||||
|
/* KakaoSentDAO.selectAllKakaoSentList_advc */
|
||||||
|
|
||||||
|
SELECT COUNT(B.USER_ID) OVER () AS totMsgCnt,
|
||||||
|
B.USER_ID AS userId,
|
||||||
|
B.MSG_GROUP_ID AS msgGroupId,
|
||||||
|
B.SMS_TXT AS smsTxt,
|
||||||
|
B.SUBJECT AS subject,
|
||||||
|
B.SUBJECT_CHK_YN AS subjectChkYn,
|
||||||
|
B.REGDATE AS regDate,
|
||||||
|
B.REQ_DATE AS reqDate,
|
||||||
|
CASE
|
||||||
|
WHEN B.DELAY_YN = 'Y' AND B.DELAY_COMPLETE_YN = 'N'
|
||||||
|
THEN DATE_ADD(B.REQ_DATE, INTERVAL -30 MINUTE)
|
||||||
|
ELSE B.REQ_DATE
|
||||||
|
END AS delayOrgTime,
|
||||||
|
B.CALL_FROM AS callFrom,
|
||||||
|
B.TOT_PRICE AS totPrice,
|
||||||
|
B.EACH_PRICE AS eachPrice,
|
||||||
|
B.MSG_TYPE AS msgType,
|
||||||
|
B.FILE_CNT AS fileCnt,
|
||||||
|
B.AGENT_CODE AS agentCode,
|
||||||
|
B.CANCELDATE AS canceldate,
|
||||||
|
B.DEL_FLAG AS delFlag,
|
||||||
|
B.SEND_KIND AS sendKind,
|
||||||
|
B.MSG_KIND AS msgKind,
|
||||||
|
B.DELAY_YN AS delayYn,
|
||||||
|
B.DELAY_COMPLETE_YN AS delayCompleteYn,
|
||||||
|
B.RESERVE_YN AS reserveYn,
|
||||||
|
B.RESERVE_C_YN AS reserveCYn,
|
||||||
|
TIMESTAMPDIFF(
|
||||||
|
MINUTE,
|
||||||
|
CAST(DATE_FORMAT(B.REQ_DATE, '%Y-%m-%d %H:%i') AS CHAR),
|
||||||
|
DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i')
|
||||||
|
) AS diffMin,
|
||||||
|
B.AT_DELAY_YN AS atDelayYn,
|
||||||
|
B.AT_DELAY_COMPLETE_YN AS atDelayCompleteYn,
|
||||||
|
A.MSG_NOTICETALK_SENDER_KEY AS msgNoticetalkSenderKey,
|
||||||
|
A.BIZ_KAKAO_RESEND_YN AS bizKakaoResendYn,
|
||||||
|
CASE
|
||||||
|
WHEN B.AT_DELAY_YN = 'Y' AND B.AT_DELAY_COMPLETE_YN = 'N'
|
||||||
|
THEN DATE_ADD(B.REQ_DATE, INTERVAL -30 MINUTE)
|
||||||
|
ELSE B.REQ_DATE
|
||||||
|
END AS atDelayOrgTime,
|
||||||
|
C.YELLOW_ID AS yellowId
|
||||||
|
FROM MJ_MSG_GROUP_DATA B
|
||||||
|
INNER JOIN (
|
||||||
|
select MSG_GROUP_ID, MSG_TYPE, DEL_FLAG, MSG_NOTICETALK_SENDER_KEY, BIZ_KAKAO_RESEND_YN
|
||||||
|
from MJ_MSG_DATA
|
||||||
|
where DEL_FLAG = 'N'
|
||||||
|
<isNotEmpty property="tabType">
|
||||||
|
<isEqual property="tabType" compareValue="at">
|
||||||
|
AND MSG_TYPE = '8'
|
||||||
|
</isEqual>
|
||||||
|
<isEqual property="tabType" compareValue="ft">
|
||||||
|
AND MSG_TYPE = '9'
|
||||||
|
</isEqual>
|
||||||
|
<isEqual property="tabType" compareValue="all">
|
||||||
|
AND MSG_TYPE IN ('8','9')
|
||||||
|
</isEqual>
|
||||||
|
</isNotEmpty>
|
||||||
|
<isEmpty property="tabType">
|
||||||
|
AND MSG_TYPE IN ('8','9')
|
||||||
|
</isEmpty>
|
||||||
|
group by MSG_GROUP_ID) A
|
||||||
|
ON A.MSG_GROUP_ID = B.MSG_GROUP_ID
|
||||||
|
LEFT JOIN MJ_KAKAO_PROFILE_INFO C
|
||||||
|
ON A.MSG_NOTICETALK_SENDER_KEY = C.SENDER_KEY
|
||||||
|
WHERE (
|
||||||
|
B.DEL_FLAG = 'N' OR B.DEL_FLAG IS NULL
|
||||||
|
)
|
||||||
|
AND B.USER_ID = #userId#
|
||||||
|
<isNotEmpty property="startDate">
|
||||||
|
AND DATE_FORMAT(B.REGDATE, '%Y-%m-%d') <![CDATA[ >= ]]> DATE_FORMAT(#startDate#, '%Y-%m-%d')
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="endDate">
|
||||||
|
AND DATE_FORMAT(B.REGDATE, '%Y-%m-%d') <![CDATA[ <= ]]> DATE_FORMAT(#endDate#, '%Y-%m-%d')
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="stateType">
|
||||||
|
<isEqual property="stateType" compareValue="Y">
|
||||||
|
AND B.RESERVE_YN = 'Y'
|
||||||
|
</isEqual>
|
||||||
|
<isEqual property="stateType" compareValue="N">
|
||||||
|
AND B.RESERVE_YN = 'N'
|
||||||
|
</isEqual>
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="searchKeyword">
|
||||||
|
<isEqual property="searchCondition" compareValue="3">
|
||||||
|
AND B.SMS_TXT like CONCAT('%', #searchKeyword#, '%')
|
||||||
|
</isEqual>
|
||||||
|
</isNotEmpty>
|
||||||
|
GROUP BY B.MSG_GROUP_ID
|
||||||
|
ORDER BY 1=1
|
||||||
|
<isNotEmpty property="searchSortCnd">
|
||||||
|
,$searchSortCnd$
|
||||||
|
</isNotEmpty>
|
||||||
|
<isNotEmpty property="searchSortOrd">
|
||||||
|
$searchSortOrd$
|
||||||
|
</isNotEmpty>
|
||||||
|
LIMIT #recordCountPerPage#
|
||||||
|
OFFSET #firstIndex#
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<!-- 전체 발송결과 조회 (그룹별)-->
|
||||||
|
<select id="KakaoSentDAO.selectAllKakaoSentListExcel_advc" parameterClass="kakaoSentVO" resultClass="kakaoSentVO">
|
||||||
/* KakaoSentDAO.selectAllKakaoSentList_advc */
|
/* KakaoSentDAO.selectAllKakaoSentList_advc */
|
||||||
SELECT t1.totMsgCnt,
|
SELECT t1.totMsgCnt,
|
||||||
t1.userId,
|
t1.userId,
|
||||||
@ -1609,7 +1714,7 @@
|
|||||||
WHEN COUNT(DISTINCT t1.REQ_DATE) > 1 THEN 'Y'
|
WHEN COUNT(DISTINCT t1.REQ_DATE) > 1 THEN 'Y'
|
||||||
ELSE 'N'
|
ELSE 'N'
|
||||||
END AS divideYN
|
END AS divideYN
|
||||||
FROM mj_msg_data t1
|
FROM mj_msg_data t1 FORCE INDEX (idx_msgdata_groupid_delfalg_msgtype_curstate)
|
||||||
LEFT OUTER JOIN BIZ_LOG BL1 ON t1.BIZ_UMID = BL1.CMID
|
LEFT OUTER JOIN BIZ_LOG BL1 ON t1.BIZ_UMID = BL1.CMID
|
||||||
WHERE
|
WHERE
|
||||||
t1.DEL_FLAG = 'N'
|
t1.DEL_FLAG = 'N'
|
||||||
|
|||||||
@ -900,6 +900,8 @@ function previewPhone(){
|
|||||||
<input type="hidden" name="searchCondition" value="<c:out value='${searchVO.searchCondition }' />" />
|
<input type="hidden" name="searchCondition" value="<c:out value='${searchVO.searchCondition }' />" />
|
||||||
<input type="hidden" name="searchKeyword" value="<c:out value='${searchVO.searchKeyword }' />" />
|
<input type="hidden" name="searchKeyword" value="<c:out value='${searchVO.searchKeyword }' />" />
|
||||||
<input type="hidden" name="pageUnit" value="<c:out value='${searchVO.pageUnit }' />" />
|
<input type="hidden" name="pageUnit" value="<c:out value='${searchVO.pageUnit }' />" />
|
||||||
|
<input type="hidden" name="tabType" value="<c:out value='${searchVO.tabType }' />" />
|
||||||
|
<input type="hidden" name="stateType" value="<c:out value='${searchVO.stateType }' />" />
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<!-- 예약 취소 -->
|
<!-- 예약 취소 -->
|
||||||
|
|||||||
@ -16,8 +16,83 @@ var thisfuledtlday = ""; //당원 마지막일
|
|||||||
var threefulstday = ""; //3개월전 시작일
|
var threefulstday = ""; //3개월전 시작일
|
||||||
var threefuledday = ""; //3개월전 마지막일
|
var threefuledday = ""; //3개월전 마지막일
|
||||||
|
|
||||||
|
function firstLodingSet(){
|
||||||
|
var html = "";
|
||||||
|
html += '<div class="list_info">';
|
||||||
|
html += ' <p>총 발송건수 <span class="c_e40000">0</span>건</p>';
|
||||||
|
html += ' <div>';
|
||||||
|
html += ' <p class="cf_text c_e40000">※ 예약 발송취소는 예약 발송시간 기준 5분 전까지만 가능</p>';
|
||||||
|
html += ' <label for="pageUnit" class="label">줄보기 선택</label>';
|
||||||
|
html += ' <select id="pageUnit" name="pageUnit" class="selType2">';
|
||||||
|
html += ' <option value="10" selected>10개보기</option>';
|
||||||
|
html += ' </select>';
|
||||||
|
html += ' </div>';
|
||||||
|
html += '</div>';
|
||||||
|
html += '<div class="tb_wrap">';
|
||||||
|
html += ' <table class="tType4">';
|
||||||
|
html += ' <colgroup>';
|
||||||
|
html += ' <col style="width: 45px;">';
|
||||||
|
html += ' <col style="width: 12%;">';
|
||||||
|
html += ' <col style="width: 7%;">';
|
||||||
|
html += ' <col style="width: auto;">';
|
||||||
|
html += ' <col style="width: 7%;">';
|
||||||
|
html += ' <col style="width: 6%;">';
|
||||||
|
html += ' <col style="width: 6%;">';
|
||||||
|
html += ' <col style="width: 6%;">';
|
||||||
|
html += ' <col style="width: 6%;">';
|
||||||
|
html += ' <col style="width: 6%;">';
|
||||||
|
html += ' <col style="width: 8%;">';
|
||||||
|
html += ' <col style="width: 8%;">';
|
||||||
|
html += ' </colgroup>';
|
||||||
|
html += ' <thead>';
|
||||||
|
html += ' <tr>';
|
||||||
|
html += ' <th rowspan="2">';
|
||||||
|
html += ' <label for="" class="label">전체 선택</label>';
|
||||||
|
html += ' <input type="checkbox" id="allCheck" name="allCheck">';
|
||||||
|
html += ' </th>';
|
||||||
|
html += ' <th rowspan="2">발송일시';
|
||||||
|
html += ' <div class="sort_wrap">';
|
||||||
|
html += ' <input type="button" class="sort sortBtn" id="sort_reqdate">';
|
||||||
|
html += ' </div>';
|
||||||
|
html += ' </th>';
|
||||||
|
html += ' <th rowspan="2">형태';
|
||||||
|
html += ' <div class="sort_wrap">';
|
||||||
|
html += ' <input type="button" class="sort sortBtn" id="sort_orderByCode">';
|
||||||
|
html += ' </div>';
|
||||||
|
html += ' </th>';
|
||||||
|
html += ' <th rowspan="2">내용</th>';
|
||||||
|
html += ' <th rowspan="2">발송건수';
|
||||||
|
html += ' <div class="sort_wrap">';
|
||||||
|
html += ' <input type="button" class="sort sortBtn" id="sort_msgGroupCnt">';
|
||||||
|
html += ' </div>';
|
||||||
|
html += ' </th>';
|
||||||
|
html += ' <th rowspan="2">대기</th>';
|
||||||
|
html += ' <th colspan="2">카카오톡결과</th>';
|
||||||
|
html += ' <th colspan="2">대체문자결과</th>';
|
||||||
|
html += ' <th rowspan="2">금액(원)</th>';
|
||||||
|
html += ' <th rowspan="2">진행상황</th>';
|
||||||
|
html += ' </tr>';
|
||||||
|
html += ' <tr>';
|
||||||
|
html += ' <th>성공</th>';
|
||||||
|
html += ' <th>실패</th>';
|
||||||
|
html += ' <th>성공</th>';
|
||||||
|
html += ' <th>실패</th>';
|
||||||
|
html += ' </tr>';
|
||||||
|
html += ' </thead>';
|
||||||
|
html += ' <tbody>';
|
||||||
|
html += ' <tr><td colspan="12">LOADING...</td></tr>';
|
||||||
|
html += ' </tbody>';
|
||||||
|
html += ' </table>';
|
||||||
|
html += '</div>';
|
||||||
|
|
||||||
|
$(".msgSentAllLoad").html(html);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
|
|
||||||
|
firstLodingSet();
|
||||||
|
|
||||||
//초기 전체 리스트 페이지 보여주기
|
//초기 전체 리스트 페이지 보여주기
|
||||||
var form = document.searchForm;
|
var form = document.searchForm;
|
||||||
form.listType.value = "groupList";
|
form.listType.value = "groupList";
|
||||||
@ -417,8 +492,10 @@ function fn_sentDetailView(msgGroupId) {
|
|||||||
<input type="hidden" id="msgGroupIdList" name="msgGroupIdList" value=""/>
|
<input type="hidden" id="msgGroupIdList" name="msgGroupIdList" value=""/>
|
||||||
<input type="hidden" name="searchSortCnd" value="<c:out value="${searchVO.searchSortCnd}" />" />
|
<input type="hidden" name="searchSortCnd" value="<c:out value="${searchVO.searchSortCnd}" />" />
|
||||||
<input type="hidden" name="searchSortOrd" value="<c:out value="${searchVO.searchSortOrd}" />" />
|
<input type="hidden" name="searchSortOrd" value="<c:out value="${searchVO.searchSortOrd}" />" />
|
||||||
<input type="hidden" id="tabType" name="tabType" value="all"/><!-- 탭 종류 -->
|
<!-- <input type="hidden" id="tabType" name="tabType" value="all"/>탭 종류 -->
|
||||||
<input type="hidden" id="stateType" name="stateType" value="all"/><!-- 발송상태 종류 -->
|
<input type="hidden" id="tabType" name="tabType" value="${searchVO.tabType}"/><!-- 탭 종류 -->
|
||||||
|
<!-- <input type="hidden" id="stateType" name="stateType" value="all"/>발송상태 종류 -->
|
||||||
|
<input type="hidden" id="stateType" name="stateType" value="${searchVO.stateType}"/><!-- 발송상태 종류 -->
|
||||||
<input type="hidden" id="listType" name="listType" value="groupList"/><!-- 리스트 종류 -->
|
<input type="hidden" id="listType" name="listType" value="groupList"/><!-- 리스트 종류 -->
|
||||||
<input type="hidden" id="addrGrpNm" name="addrGrpNm" value=""/><!-- 주소록 그룹 이름 -->
|
<input type="hidden" id="addrGrpNm" name="addrGrpNm" value=""/><!-- 주소록 그룹 이름 -->
|
||||||
<input type="hidden" id="mberId" name="mberId" value="${LoginVO.id}"/><!-- 주소록 그룹 이름 -->
|
<input type="hidden" id="mberId" name="mberId" value="${LoginVO.id}"/><!-- 주소록 그룹 이름 -->
|
||||||
@ -555,11 +632,11 @@ function fn_sentDetailView(msgGroupId) {
|
|||||||
<div class="list_tab_wrap2 type4">
|
<div class="list_tab_wrap2 type4">
|
||||||
<!-- tab button -->
|
<!-- tab button -->
|
||||||
<ul class="list_tab">
|
<ul class="list_tab">
|
||||||
<li class="tab active"><button type="button" onclick="fnTabLoad('',0); return false;">전체</button></li>
|
<li class="tab <c:if test="${searchVO.tabType eq '' || searchVO.tabType eq 'all' || empty searchVO.tabType}">active</c:if>"><button type="button" onclick="fnTabLoad('',0); return false;">전체</button></li>
|
||||||
<li class="tab"><button type="button" onclick="fnTabLoad('at', 1); return false;">알림톡</button></li>
|
<li class="tab <c:if test="${searchVO.tabType eq 'at'}">active</c:if>"><button type="button" onclick="fnTabLoad('at', 1); return false;">알림톡</button></li>
|
||||||
<%-- <c:if test="${pageContext.request.serverName == 'localhost'
|
<%-- <c:if test="${pageContext.request.serverName == 'localhost'
|
||||||
|| pageContext.request.serverName == '119.193.215.98'}">
|
|| pageContext.request.serverName == '119.193.215.98'}">
|
||||||
<li class="tab"><button type="button" onclick="fnTabLoad('ft', 2); return false;">친구톡</button></li>
|
<li class="tab <c:if test="${searchVO.tabType eq 'ft'}">active</c:if>"><button type="button" onclick="fnTabLoad('ft', 2); return false;">친구톡</button></li>
|
||||||
</c:if> --%>
|
</c:if> --%>
|
||||||
</ul><!--// tab button -->
|
</ul><!--// tab button -->
|
||||||
</div>
|
</div>
|
||||||
@ -582,7 +659,7 @@ function fn_sentDetailView(msgGroupId) {
|
|||||||
<!-- <div class="on_active">받는사람(전송건별)</div> -->
|
<!-- <div class="on_active">받는사람(전송건별)</div> -->
|
||||||
<!-- </div> -->
|
<!-- </div> -->
|
||||||
<ul>
|
<ul>
|
||||||
<li class="tab active">
|
<li class="tab <c:if test="${searchVO.stateType eq 'all' || searchVO.stateType eq '' || empty searchVO.stateType}">active</c:if>">
|
||||||
<button type="button" onclick="fnListLoad('all','0'); return false;">전체</button>
|
<button type="button" onclick="fnListLoad('all','0'); return false;">전체</button>
|
||||||
</li>
|
</li>
|
||||||
<!-- <li class="tab">
|
<!-- <li class="tab">
|
||||||
@ -594,10 +671,10 @@ function fn_sentDetailView(msgGroupId) {
|
|||||||
<li class="tab">
|
<li class="tab">
|
||||||
<button type="button" onclick="fnListLoad('fail','3'); return false;">수신오류</button>
|
<button type="button" onclick="fnListLoad('fail','3'); return false;">수신오류</button>
|
||||||
</li> -->
|
</li> -->
|
||||||
<li class="tab">
|
<li class="tab <c:if test="${searchVO.stateType eq 'N'}">active</c:if>">
|
||||||
<button type="button" onclick="fnListLoad('N','1'); return false;">즉시</button>
|
<button type="button" onclick="fnListLoad('N','1'); return false;">즉시</button>
|
||||||
</li>
|
</li>
|
||||||
<li class="tab">
|
<li class="tab" <c:if test="${searchVO.stateType eq 'Y'}">active</c:if>>
|
||||||
<button type="button" onclick="fnListLoad('Y','2'); return false;">예약</button>
|
<button type="button" onclick="fnListLoad('Y','2'); return false;">예약</button>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user