이준호 이준호 2025-05-08
알림톡 발송결과 성능 개선
@91914a2cf573cebad838a90661a0769ee3a13b02
src/main/java/itn/let/kakao/user/sent/service/impl/KakaoSentServiceImpl.java
--- src/main/java/itn/let/kakao/user/sent/service/impl/KakaoSentServiceImpl.java
+++ src/main/java/itn/let/kakao/user/sent/service/impl/KakaoSentServiceImpl.java
@@ -290,6 +290,7 @@
 		//성공 건수 세팅
 		KakaoSentVO eachCnt = new KakaoSentVO();
 		eachCnt.setMsgGroupId(result.getMsgGroupId());
+		eachCnt.setBizKakaoResendYn("Y".equals(result.getBizKakaoResendYn()) ? "Y" : "N");
 		try {
 			eachCnt = kakaoSentDAO.selectKakaoSentCntEachCnt_advc(eachCnt);
 		} catch (Exception e) {
src/main/resources/egovframework/sqlmap/let/mjo/kakao/KakaoSent_SQL_Mysql.xml
--- src/main/resources/egovframework/sqlmap/let/mjo/kakao/KakaoSent_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/mjo/kakao/KakaoSent_SQL_Mysql.xml
@@ -1664,81 +1664,48 @@
 	
 	<select id="KakaoSentDAO.selectKakaoSentCntEachCnt_advc" parameterClass="kakaoSentVO" resultClass="kakaoSentVO">
 		SELECT 
-		    a.MSG_GROUP_ID AS msgGroupId,
-		    a.successCount,
-		    a.waitCount,
-		    a.failCount,
-		    a.kakaoResendSuccCount,
-		    a.kakaoResendFailCount,
-		    a.successCount * bkp.BIZ_KAKAO_AT_PRICE AS successPrice,
-		    (a.smsCnt * bkp.BIZ_SMS_PRICE) + (a.mmsCnt * bkp.BIZ_MMS_PRICE) AS kakaoResendSuccPrice,
-		    a.divideYn
+		    a.MSG_GROUP_ID AS msgGroupId
+		    , a.successCount
+		    , a.waitCount
+		    , a.failCount
+		    , a.divideYn
+		    <isEqual property="bizKakaoResendYn" compareValue="Y">
+			    , a.kakaoResendSuccCount
+			    , a.kakaoResendFailCount
+			    , 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 (
 		    SELECT  
-		        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 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.BIZ_KAKAO_RESEND_YN = 'Y'
-                        AND BL1.CALL_STATUS IN ('6600', '4100'), 1, 0))                     AS kakaoResendSuccCount,
-                ( 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 ) = '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
+		        	 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 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
+		             , CASE
+		                 WHEN COUNT(DISTINCT t1.REQ_DATE) > 1 THEN 'Y'
+		                 ELSE 'N'
+		                 END                                                                                        							    AS divideYN
+		             <isEqual property="bizKakaoResendYn" compareValue="Y">
+			             , SUM(IF(t1.BIZ_KAKAO_RESEND_YN = 'Y' AND BL1.CALL_STATUS IN ('6600', '4100'), 1,0))              							AS kakaoResendSuccCount
+			             , SUM(IF(t1.BIZ_KAKAO_RESEND_YN = 'Y' AND BL1.CALL_STATUS not IN ('6600', '4100'), 1,0))         							AS kakaoResendFailCount
+			             , 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
+			             , 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
+		             </isEqual>
 		    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 
-		        t1.DEL_FLAG = 'N'
+		        t1.MSG_GROUP_ID = #msgGroupId#
 		        AND t1.MSG_TYPE IN ('8', '9')
 		        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
 		) a
 		LEFT OUTER JOIN BIZ_KAKAO_PRICE bkp ON bkp.MSG_GROUP_ID = a.MSG_GROUP_ID
Add a comment
List