알림톡 발송결과 성능 개선

This commit is contained in:
leejunho 2025-05-08 11:03:49 +09:00
parent 04dc4c5d34
commit 91914a2cf5
2 changed files with 37 additions and 69 deletions

View File

@ -290,6 +290,7 @@ public class KakaoSentServiceImpl extends EgovAbstractServiceImpl implements Ka
//성공 건수 세팅 //성공 건수 세팅
KakaoSentVO eachCnt = new KakaoSentVO(); KakaoSentVO eachCnt = new KakaoSentVO();
eachCnt.setMsgGroupId(result.getMsgGroupId()); eachCnt.setMsgGroupId(result.getMsgGroupId());
eachCnt.setBizKakaoResendYn("Y".equals(result.getBizKakaoResendYn()) ? "Y" : "N");
try { try {
eachCnt = kakaoSentDAO.selectKakaoSentCntEachCnt_advc(eachCnt); eachCnt = kakaoSentDAO.selectKakaoSentCntEachCnt_advc(eachCnt);
} catch (Exception e) { } catch (Exception e) {

View File

@ -1664,81 +1664,48 @@
<select id="KakaoSentDAO.selectKakaoSentCntEachCnt_advc" parameterClass="kakaoSentVO" resultClass="kakaoSentVO"> <select id="KakaoSentDAO.selectKakaoSentCntEachCnt_advc" parameterClass="kakaoSentVO" resultClass="kakaoSentVO">
SELECT SELECT
a.MSG_GROUP_ID AS msgGroupId, a.MSG_GROUP_ID AS msgGroupId
a.successCount, , a.successCount
a.waitCount, , a.waitCount
a.failCount, , a.failCount
a.kakaoResendSuccCount, , a.divideYn
a.kakaoResendFailCount, <isEqual property="bizKakaoResendYn" compareValue="Y">
a.successCount * bkp.BIZ_KAKAO_AT_PRICE AS successPrice, , a.kakaoResendSuccCount
(a.smsCnt * bkp.BIZ_SMS_PRICE) + (a.mmsCnt * bkp.BIZ_MMS_PRICE) AS kakaoResendSuccPrice, , a.kakaoResendFailCount
a.divideYn , a.successCount * bkp.BIZ_KAKAO_AT_PRICE AS successPrice
, (a.smsCnt * bkp.BIZ_SMS_PRICE) + (a.mmsCnt * bkp.BIZ_MMS_PRICE) AS kakaoResendSuccPrice
</isEqual>
<isNotEqual property="bizKakaoResendYn" compareValue="Y">
, 0 AS kakaoResendSuccCount
, 0 AS kakaoResendFailCount
, 0 AS successPrice
, 0 AS kakaoResendSuccPrice
</isNotEqual>
FROM ( FROM (
SELECT SELECT
t1.MSG_GROUP_ID, t1.MSG_GROUP_ID
SUM(IF(t1.RESERVE_C_YN = 'N' AND t1.RSLT_CODE = '7000', 1, 0)) AS successCount, , SUM(IF(t1.RESERVE_C_YN = 'N' AND t1.RSLT_CODE = '7000', 1, 0)) AS successCount
SUM(IF(t1.RESERVE_C_YN = 'N' AND t1.RSLT_CODE IS NULL AND t1.SENT_DATE IS NULL AND t1.RSLT_DATE IS NULL, 1, 0)) AS waitCount, , SUM(IF(t1.RESERVE_C_YN = 'N' AND t1.RSLT_CODE IS NULL AND t1.SENT_DATE IS NULL AND t1.RSLT_DATE IS NULL, 1,0)) AS waitCount
SUM(IF(t1.RESERVE_C_YN = 'N' AND t1.RSLT_CODE != '7000' AND t1.RSLT_CODE IS NOT NULL, 1, 0)) AS failCount, , SUM(IF(t1.RESERVE_C_YN = 'N' AND t1.RSLT_CODE != '7000' AND t1.RSLT_CODE IS NOT NULL, 1, 0)) AS failCount
SUM(IF(t1.BIZ_KAKAO_RESEND_YN = 'Y' , CASE
AND BL1.CALL_STATUS IN ('6600', '4100'), 1, 0)) AS kakaoResendSuccCount, WHEN COUNT(DISTINCT t1.REQ_DATE) > 1 THEN 'Y'
( SELECT COUNT(0) ELSE 'N'
FROM BIZ_LOG BL1, END AS divideYN
MJ_MSG_DATA MMD1 <isEqual property="bizKakaoResendYn" compareValue="Y">
WHERE t1.BIZ_KAKAO_RESEND_YN = 'Y' , SUM(IF(t1.BIZ_KAKAO_RESEND_YN = 'Y' AND BL1.CALL_STATUS IN ('6600', '4100'), 1,0)) AS kakaoResendSuccCount
AND t1.MSG_GROUP_ID = MMD1.MSG_GROUP_ID , SUM(IF(t1.BIZ_KAKAO_RESEND_YN = 'Y' AND BL1.CALL_STATUS not IN ('6600', '4100'), 1,0)) AS kakaoResendFailCount
AND MMD1.BIZ_UMID = BL1.CMID , SUM(IF(t1.BIZ_KAKAO_RESEND_YN = 'Y' AND BL1.CALL_STATUS IN ('6600', '4100') AND t1.BIZ_KAKAO_RESEND_TYPE = 'SMS', 1, 0)) AS smsCnt
AND ( , SUM(IF(t1.BIZ_KAKAO_RESEND_YN = 'Y' AND BL1.CALL_STATUS IN ('6600', '4100') AND t1.BIZ_KAKAO_RESEND_TYPE = 'MMS', 1, 0)) AS mmsCnt
CASE </isEqual>
WHEN BL1.CALL_STATUS IN ('6600',
'4100')
THEN 'S'
ELSE 'F'
END ) = 'F'
)
kakaoResendFailCount,
( SELECT COUNT(0)
FROM BIZ_LOG BL1,
MJ_MSG_DATA MMD1
WHERE t1.BIZ_KAKAO_RESEND_YN = 'Y'
AND t1.MSG_GROUP_ID = MMD1.MSG_GROUP_ID
AND MMD1.BIZ_UMID = BL1.CMID
AND (
CASE
WHEN BL1.CALL_STATUS IN ('6600',
'4100')
THEN 'S'
ELSE 'F'
END ) = 'S'
AND MMD1.BIZ_KAKAO_RESEND_TYPE = 'SMS'
)
smsCnt,
( SELECT COUNT(0)
FROM BIZ_LOG BL1,
MJ_MSG_DATA MMD1
WHERE t1.BIZ_KAKAO_RESEND_YN = 'Y'
AND t1.MSG_GROUP_ID = MMD1.MSG_GROUP_ID
AND MMD1.BIZ_UMID = BL1.CMID
AND (
CASE
WHEN BL1.CALL_STATUS IN ('6600',
'4100')
THEN 'S'
ELSE 'F'
END ) = 'S'
AND MMD1.BIZ_KAKAO_RESEND_TYPE = 'MMS'
)
mmsCnt,
CASE
WHEN COUNT(DISTINCT t1.REQ_DATE) > 1 THEN 'Y'
ELSE 'N'
END AS divideYN
FROM mj_msg_data t1 FORCE INDEX (idx_msgdata_groupid_delfalg_msgtype_curstate) 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 <isEqual property="bizKakaoResendYn" compareValue="Y">
LEFT OUTER JOIN BIZ_LOG BL1 ON t1.BIZ_UMID = BL1.CMID
</isEqual>
WHERE WHERE
t1.DEL_FLAG = 'N' t1.MSG_GROUP_ID = #msgGroupId#
AND t1.MSG_TYPE IN ('8', '9') AND t1.MSG_TYPE IN ('8', '9')
AND t1.CUR_STATE IN ('0', '1', '2', '3') AND t1.CUR_STATE IN ('0', '1', '2', '3')
AND t1.MSG_GROUP_ID = #msgGroupId# AND t1.DEL_FLAG = 'N'
GROUP BY t1.MSG_GROUP_ID GROUP BY t1.MSG_GROUP_ID
) a ) a
LEFT OUTER JOIN BIZ_KAKAO_PRICE bkp ON bkp.MSG_GROUP_ID = a.MSG_GROUP_ID LEFT OUTER JOIN BIZ_KAKAO_PRICE bkp ON bkp.MSG_GROUP_ID = a.MSG_GROUP_ID