name 2023-07-31
통계관리 월문자발송건수 내역 API 수정
@abcbbf05ccab6e569104dd6f6e43db844a86dde6
src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java
--- src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java
+++ src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java
@@ -170,12 +170,13 @@
 	private int aSuccessCount;		// API 문자발송 성공건수
 	private int aSendCount;			// API 문자 발송건수
 	
+	private int totalSendCount;			// 전체 문자발송 건수
+	private int totalSuccessCount;		// 전체 문자발송 성공건수
+	
+	private int rateTotalSuccessCount;	// 전체 문자발송 성공율
 	private int rateSuccessCount;		// 홈페이지 전송 성공율
 	private int rateApiSuccessCount;	// API 전송 성공율
 	
-	private int totalSendCount;			// 전체 문자발송 건수
-	private int totalSuccessCount;		// 전체 문자발송 성공건수
-	private int totalRateSuccessCount;	// 전체 문자발송 성공율
 	
 	public int getRateSuccessCount() {
 		return rateSuccessCount;
@@ -201,11 +202,11 @@
 	public void setTotalSuccessCount(int totalSuccessCount) {
 		this.totalSuccessCount = totalSuccessCount;
 	}
-	public int getTotalRateSuccessCount() {
-		return totalRateSuccessCount;
+	public int getRateTotalSuccessCount() {
+		return rateTotalSuccessCount;
 	}
-	public void setTotalRateSuccessCount(int totalRateSuccessCount) {
-		this.totalRateSuccessCount = totalRateSuccessCount;
+	public void setRateTotalSuccessCount(int rateTotalSuccessCount) {
+		this.rateTotalSuccessCount = rateTotalSuccessCount;
 	}
 	public int getaSuccessCount() {
 		return aSuccessCount;
src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
--- src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
@@ -5019,17 +5019,17 @@
 	
 		SELECT
 			a.SEND_DATE														AS regDate
-			, a.send_cnt													AS sendCount
-			, a.success_cnt													AS successCount
-			, IFNULL(ROUND((a.success_cnt / a.send_cnt ) * 100), 0)			AS rateSuccessCount
-			
+			, IFNULL(a.send_cnt, 0)											AS sendCount
 			, IFNULL(a.API_SEND_CNT, 0)										AS aSendCount
-			, IFNULL(a.API_SUCCESS_CNT, 0)									AS aSuccessCount
-			, IFNULL(ROUND((a.API_SUCCESS_CNT / a.API_SEND_CNT ) * 100), 0) AS rateApiSuccessCount
+			, IFNULL(a.send_cnt, 0) + IFNULL(a.API_SEND_CNT, 0)				AS totalSendCount
 			
-			, (IFNULL(a.send_cnt, 0) + IFNULL(a.API_SEND_CNT, 0))			AS totalSendCount
-			, (IFNULL(a.success_cnt, 0) + IFNULL(a.API_SUCCESS_CNT, 0))		AS totalSuccessCount
-			, IFNULL(ROUND(((IFNULL(a.success_cnt, 0) + IFNULL(a.API_SUCCESS_CNT, 0)) / (IFNULL(a.send_cnt, 0) + IFNULL(a.API_SEND_CNT, 0))) * 100), 0) AS totalRateSuccessCount
+			, IFNULL(a.success_cnt, 0)										AS successCount
+			, IFNULL(a.API_SUCCESS_CNT, 0)									AS aSuccessCount
+			, IFNULL(a.success_cnt, 0) + IFNULL(a.API_SUCCESS_CNT, 0)		AS totalSuccessCount
+
+			, IFNULL(ROUND(((IFNULL(a.success_cnt, 0) + IFNULL(a.API_SUCCESS_CNT, 0)) / (IFNULL(a.send_cnt, 0) + IFNULL(a.API_SEND_CNT, 0))) * 100), 0) AS rateTotalSuccessCount
+			, IFNULL(ROUND((a.success_cnt / a.send_cnt ) * 100), 0)			AS rateSuccessCount
+			, IFNULL(ROUND((a.API_SUCCESS_CNT / a.API_SEND_CNT ) * 100), 0) AS rateApiSuccessCount
 			
 			, DATE_FORMAT(a.regist_pnttm, '%H:%i:%s')						AS registPnttm
 			, COUNT(a.SEND_DATE) OVER()										AS totCnt			 /** 전체 건수 */
@@ -5107,16 +5107,29 @@
 	
 	<!-- 월별 문자발송 건수 -->
 	<select id="mjonMsgDAO.selectMsgMonthChart_230125" parameterClass="mjonMsgVO" resultClass="mjonMsgVO">
-		SELECT substring(a.send_date,1,7)	AS regDate
-			, sum(a.send_cnt)	AS	sendCount
-			, sum(a.success_cnt)	AS	successCount
+		SELECT
+			substring(a.send_date,1,7)													AS regDate
+			
+			, IFNULL(sum(a.send_cnt), 0)												AS sendCount
+			, IFNULL(sum(a.API_SEND_CNT), 0)											AS aSendCount
+			, IFNULL(sum(a.send_cnt), 0) + IFNULL(sum(a.API_SEND_CNT), 0)				AS totalSendCount
+			
+			, IFNULL(sum(a.success_cnt), 0)												AS successCount
+			, IFNULL(sum(a.API_SUCCESS_CNT), 0)											AS aSuccessCount
+			, IFNULL(sum(a.success_cnt), 0) + IFNULL(sum(a.API_SUCCESS_CNT), 0)			AS totalSuccessCount
+			
+			, IFNULL(ROUND((IFNULL(sum(a.success_cnt), 0) / IFNULL(sum(a.send_cnt), 0)) * 100), 0)			AS rateSuccessCount
+			, IFNULL(ROUND((IFNULL(sum(a.API_SUCCESS_CNT), 0) / IFNULL(sum(a.API_SEND_CNT), 0)) * 100), 0)	AS rateApiSuccessCount
+			, IFNULL(ROUND((IFNULL(sum(a.success_cnt), 0) + IFNULL(sum(a.API_SUCCESS_CNT), 0)) / (IFNULL(sum(a.send_cnt), 0) + IFNULL(sum(a.API_SEND_CNT), 0)) * 100), 0) AS rateTotalSuccessCount
+			
+			
 			, max(DATE_FORMAT(a.regist_pnttm, '%H:%i:%s'))	AS	registPnttm
-		FROM mj_sttst_msg a
+		FROM
+			mj_sttst_msg a
 		WHERE 1=1
 		   AND a.send_date like concat(#ntceBgnde#,'%')
 		   AND <![CDATA[ a.send_date <= DATE_FORMAT(NOW(), '%Y-%m-%d') ]]>
- 
-		group by substring(a.send_date,1,7)           
+		group by substring(a.send_date,1,7)
 		order by send_date desc
 
 	</select>	
src/main/webapp/WEB-INF/jsp/uss/ion/msg/MsgDayChart_230125.jsp
--- src/main/webapp/WEB-INF/jsp/uss/ion/msg/MsgDayChart_230125.jsp
+++ src/main/webapp/WEB-INF/jsp/uss/ion/msg/MsgDayChart_230125.jsp
@@ -233,7 +233,7 @@
 							</td>
 							
 							<td class="all">
-								<fmt:formatNumber value="${result.totalRateSuccessCount}" pattern="#,###" />%
+								<fmt:formatNumber value="${result.rateTotalSuccessCount}" pattern="#,###" />%
 							</td>
 							<td class="homePage">
 								<fmt:formatNumber value="${result.rateSuccessCount}" pattern="#,###" />%
src/main/webapp/WEB-INF/jsp/uss/ion/msg/MsgMonthChart_230125.jsp
--- src/main/webapp/WEB-INF/jsp/uss/ion/msg/MsgMonthChart_230125.jsp
+++ src/main/webapp/WEB-INF/jsp/uss/ion/msg/MsgMonthChart_230125.jsp
@@ -11,9 +11,6 @@
 	response.setDateHeader("Expires",0);   
 	if (request.getProtocol().equals("HTTP/1.1")) response.setHeader("Cache-Control", "no-cache"); 
 %> 
-<!DOCTYPE html>
-<html lang="ko">
-<head>
 <title>월별 문자발송건수 통계</title>
 <meta http-equiv="content-type" content="text/html; charset=utf-8">
 <script type="text/javascript" src="<c:url value='/js/EgovMultiFile.js'/>"></script>
@@ -30,20 +27,31 @@
 	}
 	/* $('#searchYear').find('option:contains("${searchVO.ntceBgnde}")').attr("selected",true); */
 	$('#searchYear').find('option[value="${searchVO.ntceBgnde}"]').attr("selected",true);
+	
+	
+	var selectSendKind = $("#sendKind option:selected").val();
+	
+	if(selectSendKind == "H"){
+		$('.all').css('display', 'none');
+		$('.api').css('display', 'none');
+		setThead(1);
+	}else if(selectSendKind == "A"){
+		$('.all').css('display', 'none');
+		$('.homePage').css('display', 'none');
+		setThead(1);
+	}else{
+		setThead(3);
+	}
 });
 	
-	
-	
-	function linkPage(){
+function setThead(index){
+	$("#sendHead").attr('colspan',index);
+	$("#successHead").attr('colspan',index);
+	$("#rateHead").attr('colspan',index);
+}
+
+function linkPage(){
 	var listForm = document.listForm ;
-	/* if( $('#ntceBgndeYYYMMDD').val() != '' && $('#ntceEnddeYYYMMDD').val() != '' ){
-		var iChkBeginDe = Number($('#ntceBgndeYYYMMDD').val().replaceAll("-", ""));
-		var iChkEndDe =  Number($('#ntceEnddeYYYMMDD').val().replaceAll("-", ""));
-		if(iChkBeginDe > iChkEndDe || iChkEndDe < iChkBeginDe ){
-			alert("검색 시작 일자는 종료 일자 보다 클 수 없습니다.");
-			return;
-		}
-	} */
 	$('#ntceBgnde').val($('#searchYear option:selected').val());
 	listForm.submit();
 }
@@ -63,8 +71,6 @@
     cursor: pointer;
 }
 </style>
-</head>
-<body>
 
 <compress:html>
 
@@ -84,60 +90,95 @@
 		
 		<div class="pageCont">
 			<div class="listSerch">
-				<%-- <input type="hidden" name="cal_url" id="cal_url" value="/sym/cmm/EgovNormalCalPopup.do">
-			    <a href="#" onclick="javascript:fn_egov_NormalCalendar(document.forms.listForm, document.forms.listForm.ntceBgndeYYYMMDD);">
-			    <input style="width:auto;min-width: 83px;" type="text" class="date_format" name="ntceBgndeYYYMMDD" id="ntceBgndeYYYMMDD" size="4" maxlength="4" readonly=""
-			    value="<c:out value="${searchVO.ntceBgnde}" />" >
-			   	 	<input type="button" class="calBtn">
-		    	</a>
-				&nbsp;&nbsp;~    	
-			    <a href="#" onclick="javascript:fn_egov_NormalCalendar(document.forms.listForm, document.forms.listForm.ntceEnddeYYYMMDD);">
-				<input style="width:auto;min-width: 83px;" type="text" class="date_format" name="ntceEnddeYYYMMDD" id="ntceEnddeYYYMMDD" size="4" maxlength="4" readonly=""
-		    	value="<c:out value="${searchVO.ntceEndde}" />"
-		    	>
-			   	 	<input type="button" class="calBtn">
-		    	</a>
-				<a href="#" style="margin-left: 17px;" onclick="init_date(); return false;">
-					<img src="/pb/img/common/topTimeOut.png" alt="타임아웃 아이콘">
-				</a>
-				<input type="button" class="btnType1" style="margin-left:10px;" value="검색" onclick="fn_search(); return false;"> --%>
+				<select id="sendKind" name="sendKind" onchange="linkPage();">
+					<option value=""<c:if test="${searchVO.sendKind eq ''}">selected="selected"</c:if>>발송방식 전체</option>
+					<option value="H"<c:if test="${searchVO.sendKind eq 'H'}">selected="selected"</c:if>>WEB</option>
+					<option value="A"<c:if test="${searchVO.sendKind eq 'A'}">selected="selected"</c:if>>API</option>
+				</select>
 				<select id="searchYear" name="searchYear" onchange="linkPage();"></select>
-				<br/><br/>
-				<c:if test="${sttstDate ne '' and sttstDate ne null }">
-					(집계 일시 : ${sttstDate}(금일))
-				</c:if>								
 			</div>
-			<%-- <div class="listTop">
-				<p class="tType5">총 <span class="tType4 c_456ded fwBold"><fmt:formatNumber value="${paginationInfo.totalRecordCount}" pattern="#,###" /></span>건</p>
-			</div> --%>
+			<div class="listTop">
+				<p class="tType5">
+					<c:if test="${sttstDate ne '' and sttstDate ne null }">
+						(집계 일시 : ${sttstDate}(금일))
+					</c:if>
+				</p>
+			</div>
 			<div class="tableWrap">
 				<table class="tbType1">
 					<colgroup>
-						<col style="width: auto;">
 						<col style="width: 25%">
-						<col style="width: 25%">
-						<col style="width: 25%">
+						<col style="width: 25%" class="all">
+						<col style="width: 25%" class="homePage">
+						<col style="width: 25%" class="api">
+						<col style="width: 25%" class="all">
+						<col style="width: 25%" class="homePage">
+						<col style="width: 25%" class="api">
+						<col style="width: 25%" class="all">
+						<col style="width: 25%" class="homePage">
+						<col style="width: 25%" class="api">
 					</colgroup>
 					<thead>
 						<tr>
-							<th>발송월</th>
-							<th>발송건수</th>
-							<th>성공건수</th>
-							<th>성공율</th>
+							<th rowspan="2" style="vertical-align: middle;">발송일</th>
+							<th id="sendHead">발송건수</th>
+							<th id="successHead">성공건수</th>
+							<th id="rateHead">성공율</th>
+						</tr>
+						<tr>
+							<th class="all">전체</th>
+							<th class="homePage">WEB</th>
+							<th class="api">API</th>
+							<th class="all">전체</th>
+							<th class="homePage">WEB</th>
+							<th class="api">API</th>
+							<th class="all">전체</th>
+							<th class="homePage">WEB</th>
+							<th class="api">API</th>
 						</tr>
 					</thead>
 					<tbody>
 						<c:forEach var="result" items="${resultList}" varStatus="status">
 						<tr>
-							<td><c:out value="${result.regDate}"/></td>
-							<td><fmt:formatNumber value="${result.sendCount}" pattern="#,###" /></td>
-							<td><fmt:formatNumber value="${result.successCount}" pattern="#,###" /></td>
-							<td><fmt:formatNumber value="${(result.successCount / result.sendCount) * 100}" pattern="#,###" />%</td>
+							<td>
+								<c:out value="${result.regDate}"/>
+							</td>
+							<td class="all">
+								<fmt:formatNumber value="${result.totalSendCount}" pattern="#,###" />
+							</td>
+							<td class="homePage">
+								<fmt:formatNumber value="${result.sendCount}" pattern="#,###" />
+							</td>
+							<td class="api">
+								<fmt:formatNumber value="${result.aSendCount}" pattern="#,###" />
+							</td>
+							
+							<td class="all">
+								<fmt:formatNumber value="${result.totalSuccessCount}" pattern="#,###" />
+							</td>
+							<td class="homePage">
+								<fmt:formatNumber value="${result.successCount}" pattern="#,###" />
+							</td>
+							<td class="api">
+								<fmt:formatNumber value="${result.aSuccessCount}" pattern="#,###" />
+							</td>
+							
+							<td class="all">
+								<fmt:formatNumber value="${result.rateTotalSuccessCount}" pattern="#,###" />%
+							</td>
+							<td class="homePage">
+								<fmt:formatNumber value="${result.rateSuccessCount}" pattern="#,###.##" />%
+							</td>
+							<td class="api">
+								<fmt:formatNumber value="${result.rateApiSuccessCount}" pattern="#,###" />%
+							</td>
 						</tr>
 						</c:forEach>
 						<c:if test="${empty resultList}">
-		         			<tr><td colspan="4"><spring:message code="common.nodata.msg" /></td></tr>
-		         		</c:if>    
+							<tr>
+								<td colspan="10"><spring:message code="common.nodata.msg" /></td>
+							</tr>
+						</c:if>
 					</tbody>
 				</table>
 			</div>
@@ -145,5 +186,3 @@
 	</div>
 </form>
 </compress:html>
-</body>
-</html>
Add a comment
List