이준호 이준호 2025-04-02
알림톡 발송결과 오류 수정
@9c94241a52cca6c959a4bc356e415cb29f3b08d0
src/main/java/itn/let/kakao/user/sent/service/KakaoSentVO.java
--- src/main/java/itn/let/kakao/user/sent/service/KakaoSentVO.java
+++ src/main/java/itn/let/kakao/user/sent/service/KakaoSentVO.java
@@ -110,8 +110,8 @@
 	
 	private String statusCd;
 	
-	private int successPrice;
-	private int kakaoResendSuccPrice;
+	private String successPrice;
+	private String kakaoResendSuccPrice;
 	
 	private String divideYn;
 	
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
@@ -299,7 +299,7 @@
 		
 	}
 	
-	private String priceProc(int successPrice, int kakaoResendSuccPrice) {
+	private String priceProc(String successPrice, String kakaoResendSuccPrice) {
 		
 		String totPrice = "-";
 		
@@ -311,7 +311,8 @@
 		BigDecimal totalPrice = atPrice.add(kakaoResendPrice);
 		// 소수점 한 자리로 설정 (반올림)// totalPrice 값을 소수점 한 자리까지 반올림하여 roundedTotalPrice에 저장
 		// RoundingMode.HALF_UP: 반올림 방식으로, 소수점 기준 5 이상이면 올림, 그렇지 않으면 내림
-		BigDecimal roundedTotalPrice = totalPrice.setScale(1, RoundingMode.HALF_UP);
+//		BigDecimal roundedTotalPrice = totalPrice.setScale(1, RoundingMode.HALF_UP);
+		BigDecimal roundedTotalPrice = totalPrice;
 		
 		// roundedTotalPrice가 0인지 확인
 		// BigDecimal.compareTo(BigDecimal.ZERO)는 값을 비교하는 메서드
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
@@ -1458,6 +1458,11 @@
 						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">
@@ -1547,126 +1552,67 @@
 	</select>
 	
 	<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
-		FROM   (SELECT  t1.MSG_GROUP_ID,
-		                ( SELECT COUNT(0)
-		                FROM    MJ_MSG_DATA C
-		                WHERE   C.RESERVE_C_YN = 'N'
-		                AND     C.MSG_GROUP_ID = t1.MSG_GROUP_ID
-		                AND     C.RSLT_CODE    = '7000'
-		                )
-		                AS successCount ,
-		                ( SELECT COUNT(0)
-		                FROM    MJ_MSG_DATA C
-		                WHERE   C.RESERVE_C_YN = 'N'
-		                AND     C.MSG_GROUP_ID = t1.MSG_GROUP_ID
-		                AND
-		                        (
-		                                C.RSLT_CODE IS NULL
-		                        AND     C.SENT_DATE IS NULL
-		                        AND     C.RSLT_DATE IS NULL
-		                        )
-		                )
-		                AS waitCount ,
-		                ( SELECT COUNT(0)
-		                FROM    MJ_MSG_DATA C
-		                WHERE   C.RESERVE_C_YN = 'N'
-		                AND     C.MSG_GROUP_ID = t1.MSG_GROUP_ID
-		                AND
-		                        (
-		                                C.RSLT_CODE          != '7000'
-		                        AND     C.RSLT_CODE IS NOT NULL
-		                        )
-		                )
-		                AS failCount ,
-		                ( 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'
-		                )
-		                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
-		FROM     mj_msg_data t1
-        WHERE    t1.DEL_FLAG = 'N'
-        AND      t1.MSG_TYPE IN ('8',
-                                '9')
-        AND      t1.CUR_STATE IN ('0',
-                                  '1',
-                                  '2',
-                                  '3')
-        AND      t1.MSG_GROUP_ID = #msgGroupId#
-        GROUP BY t1.MSG_GROUP_ID
-        )
-        a
-        LEFT OUTER JOIN BIZ_KAKAO_PRICE bkp
-        ON     bkp.MSG_GROUP_ID = a.MSG_GROUP_ID
+		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
+		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,
+		        SUM(IF(
+		            t1.BIZ_KAKAO_RESEND_YN = 'Y' AND 
+		            NOT EXISTS (
+		                SELECT 1
+		                FROM (
+		                    SELECT '6600' AS status UNION ALL SELECT '4100'
+		                ) AS status_list
+		                WHERE status_list.status = BL1.CALL_STATUS
+		            ), 1, 0
+		        )) AS kakaoResendFailCount,
+		        SUM(IF(
+		            t1.BIZ_KAKAO_RESEND_YN = 'Y' AND 
+		            NOT EXISTS (
+		                SELECT 1
+		                FROM (
+		                    SELECT '6600' AS status UNION ALL SELECT '4100'
+		                ) AS status_list
+		                WHERE status_list.status = BL1.CALL_STATUS
+		            ) AND t1.BIZ_KAKAO_RESEND_TYPE = 'SMS', 1, 0
+		        )) AS smsCnt,
+		        SUM(IF(
+		            t1.BIZ_KAKAO_RESEND_YN = 'Y' AND 
+		            NOT EXISTS (
+		                SELECT 1
+		                FROM (
+		                    SELECT '6600' AS status UNION ALL SELECT '4100'
+		                ) AS status_list
+		                WHERE status_list.status = BL1.CALL_STATUS
+		            ) AND t1.BIZ_KAKAO_RESEND_TYPE = 'MMS', 1, 0
+		        )) AS mmsCnt,
+		        CASE
+		            WHEN COUNT(DISTINCT t1.REQ_DATE) > 1 THEN 'Y'
+		            ELSE 'N'
+		        END AS divideYN
+		    FROM mj_msg_data t1
+		    LEFT OUTER JOIN BIZ_LOG BL1 ON t1.BIZ_UMID = BL1.CMID
+		    WHERE 
+		        t1.DEL_FLAG = 'N'
+		        AND t1.MSG_TYPE IN ('8', '9')
+		        AND t1.CUR_STATE IN ('0', '1', '2', '3')
+		        AND t1.MSG_GROUP_ID = #msgGroupId#
+		    GROUP BY t1.MSG_GROUP_ID
+		) a
+		LEFT OUTER JOIN BIZ_KAKAO_PRICE bkp ON bkp.MSG_GROUP_ID = a.MSG_GROUP_ID
 	</select>
 	
 	<!-- 알림톡 발송결과 상세 데이터-->
src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentAllListAjax.jsp
--- src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentAllListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentAllListAjax.jsp
@@ -228,7 +228,8 @@
                                 </div>
                             </td>
 							<td>
-								<c:out value="${resultAllSentList.msgGroupCnt}"/>
+								<fmt:formatNumber value="${resultAllSentList.msgGroupCnt}" type="number" groupingUsed="true" />
+<%-- 								<c:out value="${resultAllSentList.msgGroupCnt}"/> --%>
 							</td>
 							<td>
 								<fmt:formatNumber value="${resultAllSentList.waitCount}" type="number" groupingUsed="true" />
src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentView.jsp
--- src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentView.jsp
@@ -203,14 +203,15 @@
 
 function fnSearch(pageNo){
 	
-	var form = document.searchForm;
+// 	var form = document.searchForm;
 	
-	form.pageIndex.value = pageNo ;
+// 	form.pageIndex.value = pageNo ;
 	
 	
-	form.action="/web/kakao/sent/selectKakaoSentView.do";
-	form.submit();
-	
+// 	form.action="/web/kakao/sent/selectKakaoSentView.do";
+// 	form.submit();
+	cntSet();
+	linkPage(pageNo);
 }
 
 function fnExcelDownLoad(pageType, listType){
@@ -467,9 +468,9 @@
 						<div class="btn_right">
 							<label for="searchCondition" class="label">발신번호 선택 == ${kakaoSentVO.searchCondition}</label>
 							<select name="searchCondition" id="searchCondition" class="selType2">
-								<option value="4" <c:if test="${kakaoSentVO.searchCondition == '3'}">selected</c:if> >채널ID</option>
-								<option value="5" <c:if test="${kakaoSentVO.searchCondition == '3'}">selected</c:if> >내용</option>
-								<option value="3" <c:if test="${kakaoSentVO.searchCondition == '3'}">selected</c:if> >수신번호</option>
+<%-- 								<option value="4" <c:if test="${kakaoSentVO.searchCondition == '3'}">selected</c:if> >채널ID</option> --%>
+								<option value="3" <c:if test="${kakaoSentVO.searchCondition == '3'}">selected</c:if> >내용</option>
+<%-- 								<option value="3" <c:if test="${kakaoSentVO.searchCondition == '3'}">selected</c:if> >수신번호</option> --%>
 							</select>
 							<div class="search">
 								<label for="id" class="label"></label>
@@ -613,6 +614,24 @@
 									<button type="button" onclick="fnListLoad('Y','2'); return false;">예약</button>
 								</li>
 							</ul>
+							<!-- 발송화면 개선 : 발송결과 추가-->
+							<div class="tab_btnbox">
+								<button type="button" class="btnType btnType14 check_validity">발송결과<i class="qmMark"></i></button>
+								<div class="info_hover_cont send_hover_cont price_hover">
+									<dl>
+										<dt class="c_222">[<span>대기</span>]</dt>
+										<dd>발송은 성공하였으며, 수신자측 통신사로부터 수신여부를 확인중인 상태 <br>
+                                               <span>※ 예약발송의 경우 실발송 전까지는 “대기”로 표시</span>
+                                           </dd>
+										<dt class="c_002c9a">[<span>성공</span>]</dt>
+										<dd>발송 및 수신이 완료된 상태</dd>
+										<dt class="c_e40000">[<span>실패</span>]</dt>
+										<dd class="last">결번, 일시정지, 전화번호 오류 등의 사유로 발송이
+											불가한 상태</dd>
+									</dl>
+								</div>
+							</div>
+							<!--// 발송화면 개선 : 발송결과 추가-->
 						</div>
 						<!-- 발송관리 리스트 -->
 						<div class="table_cont current msgSentAllLoad" id="tableCont_1">
Add a comment
List