통계관리 월문자발송건수 내역 API 수정
@abcbbf05ccab6e569104dd6f6e43db844a86dde6
--- src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java
+++ src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java
... | ... | @@ -170,12 +170,13 @@ |
| 170 | 170 |
private int aSuccessCount; // API 문자발송 성공건수 |
| 171 | 171 |
private int aSendCount; // API 문자 발송건수 |
| 172 | 172 |
|
| 173 |
+ private int totalSendCount; // 전체 문자발송 건수 |
|
| 174 |
+ private int totalSuccessCount; // 전체 문자발송 성공건수 |
|
| 175 |
+ |
|
| 176 |
+ private int rateTotalSuccessCount; // 전체 문자발송 성공율 |
|
| 173 | 177 |
private int rateSuccessCount; // 홈페이지 전송 성공율 |
| 174 | 178 |
private int rateApiSuccessCount; // API 전송 성공율 |
| 175 | 179 |
|
| 176 |
- private int totalSendCount; // 전체 문자발송 건수 |
|
| 177 |
- private int totalSuccessCount; // 전체 문자발송 성공건수 |
|
| 178 |
- private int totalRateSuccessCount; // 전체 문자발송 성공율 |
|
| 179 | 180 |
|
| 180 | 181 |
public int getRateSuccessCount() {
|
| 181 | 182 |
return rateSuccessCount; |
... | ... | @@ -201,11 +202,11 @@ |
| 201 | 202 |
public void setTotalSuccessCount(int totalSuccessCount) {
|
| 202 | 203 |
this.totalSuccessCount = totalSuccessCount; |
| 203 | 204 |
} |
| 204 |
- public int getTotalRateSuccessCount() {
|
|
| 205 |
- return totalRateSuccessCount; |
|
| 205 |
+ public int getRateTotalSuccessCount() {
|
|
| 206 |
+ return rateTotalSuccessCount; |
|
| 206 | 207 |
} |
| 207 |
- public void setTotalRateSuccessCount(int totalRateSuccessCount) {
|
|
| 208 |
- this.totalRateSuccessCount = totalRateSuccessCount; |
|
| 208 |
+ public void setRateTotalSuccessCount(int rateTotalSuccessCount) {
|
|
| 209 |
+ this.rateTotalSuccessCount = rateTotalSuccessCount; |
|
| 209 | 210 |
} |
| 210 | 211 |
public int getaSuccessCount() {
|
| 211 | 212 |
return aSuccessCount; |
--- 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 @@ |
| 5019 | 5019 |
|
| 5020 | 5020 |
SELECT |
| 5021 | 5021 |
a.SEND_DATE AS regDate |
| 5022 |
- , a.send_cnt AS sendCount |
|
| 5023 |
- , a.success_cnt AS successCount |
|
| 5024 |
- , IFNULL(ROUND((a.success_cnt / a.send_cnt ) * 100), 0) AS rateSuccessCount |
|
| 5025 |
- |
|
| 5022 |
+ , IFNULL(a.send_cnt, 0) AS sendCount |
|
| 5026 | 5023 |
, IFNULL(a.API_SEND_CNT, 0) AS aSendCount |
| 5027 |
- , IFNULL(a.API_SUCCESS_CNT, 0) AS aSuccessCount |
|
| 5028 |
- , IFNULL(ROUND((a.API_SUCCESS_CNT / a.API_SEND_CNT ) * 100), 0) AS rateApiSuccessCount |
|
| 5024 |
+ , IFNULL(a.send_cnt, 0) + IFNULL(a.API_SEND_CNT, 0) AS totalSendCount |
|
| 5029 | 5025 |
|
| 5030 |
- , (IFNULL(a.send_cnt, 0) + IFNULL(a.API_SEND_CNT, 0)) AS totalSendCount |
|
| 5031 |
- , (IFNULL(a.success_cnt, 0) + IFNULL(a.API_SUCCESS_CNT, 0)) AS totalSuccessCount |
|
| 5032 |
- , 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 |
|
| 5026 |
+ , IFNULL(a.success_cnt, 0) AS successCount |
|
| 5027 |
+ , IFNULL(a.API_SUCCESS_CNT, 0) AS aSuccessCount |
|
| 5028 |
+ , IFNULL(a.success_cnt, 0) + IFNULL(a.API_SUCCESS_CNT, 0) AS totalSuccessCount |
|
| 5029 |
+ |
|
| 5030 |
+ , 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 |
|
| 5031 |
+ , IFNULL(ROUND((a.success_cnt / a.send_cnt ) * 100), 0) AS rateSuccessCount |
|
| 5032 |
+ , IFNULL(ROUND((a.API_SUCCESS_CNT / a.API_SEND_CNT ) * 100), 0) AS rateApiSuccessCount |
|
| 5033 | 5033 |
|
| 5034 | 5034 |
, DATE_FORMAT(a.regist_pnttm, '%H:%i:%s') AS registPnttm |
| 5035 | 5035 |
, COUNT(a.SEND_DATE) OVER() AS totCnt /** 전체 건수 */ |
... | ... | @@ -5107,16 +5107,29 @@ |
| 5107 | 5107 |
|
| 5108 | 5108 |
<!-- 월별 문자발송 건수 --> |
| 5109 | 5109 |
<select id="mjonMsgDAO.selectMsgMonthChart_230125" parameterClass="mjonMsgVO" resultClass="mjonMsgVO"> |
| 5110 |
- SELECT substring(a.send_date,1,7) AS regDate |
|
| 5111 |
- , sum(a.send_cnt) AS sendCount |
|
| 5112 |
- , sum(a.success_cnt) AS successCount |
|
| 5110 |
+ SELECT |
|
| 5111 |
+ substring(a.send_date,1,7) AS regDate |
|
| 5112 |
+ |
|
| 5113 |
+ , IFNULL(sum(a.send_cnt), 0) AS sendCount |
|
| 5114 |
+ , IFNULL(sum(a.API_SEND_CNT), 0) AS aSendCount |
|
| 5115 |
+ , IFNULL(sum(a.send_cnt), 0) + IFNULL(sum(a.API_SEND_CNT), 0) AS totalSendCount |
|
| 5116 |
+ |
|
| 5117 |
+ , IFNULL(sum(a.success_cnt), 0) AS successCount |
|
| 5118 |
+ , IFNULL(sum(a.API_SUCCESS_CNT), 0) AS aSuccessCount |
|
| 5119 |
+ , IFNULL(sum(a.success_cnt), 0) + IFNULL(sum(a.API_SUCCESS_CNT), 0) AS totalSuccessCount |
|
| 5120 |
+ |
|
| 5121 |
+ , IFNULL(ROUND((IFNULL(sum(a.success_cnt), 0) / IFNULL(sum(a.send_cnt), 0)) * 100), 0) AS rateSuccessCount |
|
| 5122 |
+ , IFNULL(ROUND((IFNULL(sum(a.API_SUCCESS_CNT), 0) / IFNULL(sum(a.API_SEND_CNT), 0)) * 100), 0) AS rateApiSuccessCount |
|
| 5123 |
+ , 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 |
|
| 5124 |
+ |
|
| 5125 |
+ |
|
| 5113 | 5126 |
, max(DATE_FORMAT(a.regist_pnttm, '%H:%i:%s')) AS registPnttm |
| 5114 |
- FROM mj_sttst_msg a |
|
| 5127 |
+ FROM |
|
| 5128 |
+ mj_sttst_msg a |
|
| 5115 | 5129 |
WHERE 1=1 |
| 5116 | 5130 |
AND a.send_date like concat(#ntceBgnde#,'%') |
| 5117 | 5131 |
AND <![CDATA[ a.send_date <= DATE_FORMAT(NOW(), '%Y-%m-%d') ]]> |
| 5118 |
- |
|
| 5119 |
- group by substring(a.send_date,1,7) |
|
| 5132 |
+ group by substring(a.send_date,1,7) |
|
| 5120 | 5133 |
order by send_date desc |
| 5121 | 5134 |
|
| 5122 | 5135 |
</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
... | ... | @@ -233,7 +233,7 @@ |
| 233 | 233 |
</td> |
| 234 | 234 |
|
| 235 | 235 |
<td class="all"> |
| 236 |
- <fmt:formatNumber value="${result.totalRateSuccessCount}" pattern="#,###" />%
|
|
| 236 |
+ <fmt:formatNumber value="${result.rateTotalSuccessCount}" pattern="#,###" />%
|
|
| 237 | 237 |
</td> |
| 238 | 238 |
<td class="homePage"> |
| 239 | 239 |
<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
... | ... | @@ -11,9 +11,6 @@ |
| 11 | 11 |
response.setDateHeader("Expires",0);
|
| 12 | 12 |
if (request.getProtocol().equals("HTTP/1.1")) response.setHeader("Cache-Control", "no-cache");
|
| 13 | 13 |
%> |
| 14 |
-<!DOCTYPE html> |
|
| 15 |
-<html lang="ko"> |
|
| 16 |
-<head> |
|
| 17 | 14 |
<title>월별 문자발송건수 통계</title> |
| 18 | 15 |
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
| 19 | 16 |
<script type="text/javascript" src="<c:url value='/js/EgovMultiFile.js'/>"></script> |
... | ... | @@ -30,20 +27,31 @@ |
| 30 | 27 |
} |
| 31 | 28 |
/* $('#searchYear').find('option:contains("${searchVO.ntceBgnde}")').attr("selected",true); */
|
| 32 | 29 |
$('#searchYear').find('option[value="${searchVO.ntceBgnde}"]').attr("selected",true);
|
| 30 |
+ |
|
| 31 |
+ |
|
| 32 |
+ var selectSendKind = $("#sendKind option:selected").val();
|
|
| 33 |
+ |
|
| 34 |
+ if(selectSendKind == "H"){
|
|
| 35 |
+ $('.all').css('display', 'none');
|
|
| 36 |
+ $('.api').css('display', 'none');
|
|
| 37 |
+ setThead(1); |
|
| 38 |
+ }else if(selectSendKind == "A"){
|
|
| 39 |
+ $('.all').css('display', 'none');
|
|
| 40 |
+ $('.homePage').css('display', 'none');
|
|
| 41 |
+ setThead(1); |
|
| 42 |
+ }else{
|
|
| 43 |
+ setThead(3); |
|
| 44 |
+ } |
|
| 33 | 45 |
}); |
| 34 | 46 |
|
| 35 |
- |
|
| 36 |
- |
|
| 37 |
- function linkPage(){
|
|
| 47 |
+function setThead(index){
|
|
| 48 |
+ $("#sendHead").attr('colspan',index);
|
|
| 49 |
+ $("#successHead").attr('colspan',index);
|
|
| 50 |
+ $("#rateHead").attr('colspan',index);
|
|
| 51 |
+} |
|
| 52 |
+ |
|
| 53 |
+function linkPage(){
|
|
| 38 | 54 |
var listForm = document.listForm ; |
| 39 |
- /* if( $('#ntceBgndeYYYMMDD').val() != '' && $('#ntceEnddeYYYMMDD').val() != '' ){
|
|
| 40 |
- var iChkBeginDe = Number($('#ntceBgndeYYYMMDD').val().replaceAll("-", ""));
|
|
| 41 |
- var iChkEndDe = Number($('#ntceEnddeYYYMMDD').val().replaceAll("-", ""));
|
|
| 42 |
- if(iChkBeginDe > iChkEndDe || iChkEndDe < iChkBeginDe ){
|
|
| 43 |
- alert("검색 시작 일자는 종료 일자 보다 클 수 없습니다.");
|
|
| 44 |
- return; |
|
| 45 |
- } |
|
| 46 |
- } */ |
|
| 47 | 55 |
$('#ntceBgnde').val($('#searchYear option:selected').val());
|
| 48 | 56 |
listForm.submit(); |
| 49 | 57 |
} |
... | ... | @@ -63,8 +71,6 @@ |
| 63 | 71 |
cursor: pointer; |
| 64 | 72 |
} |
| 65 | 73 |
</style> |
| 66 |
-</head> |
|
| 67 |
-<body> |
|
| 68 | 74 |
|
| 69 | 75 |
<compress:html> |
| 70 | 76 |
|
... | ... | @@ -84,60 +90,95 @@ |
| 84 | 90 |
|
| 85 | 91 |
<div class="pageCont"> |
| 86 | 92 |
<div class="listSerch"> |
| 87 |
- <%-- <input type="hidden" name="cal_url" id="cal_url" value="/sym/cmm/EgovNormalCalPopup.do"> |
|
| 88 |
- <a href="#" onclick="javascript:fn_egov_NormalCalendar(document.forms.listForm, document.forms.listForm.ntceBgndeYYYMMDD);"> |
|
| 89 |
- <input style="width:auto;min-width: 83px;" type="text" class="date_format" name="ntceBgndeYYYMMDD" id="ntceBgndeYYYMMDD" size="4" maxlength="4" readonly="" |
|
| 90 |
- value="<c:out value="${searchVO.ntceBgnde}" />" >
|
|
| 91 |
- <input type="button" class="calBtn"> |
|
| 92 |
- </a> |
|
| 93 |
- ~ |
|
| 94 |
- <a href="#" onclick="javascript:fn_egov_NormalCalendar(document.forms.listForm, document.forms.listForm.ntceEnddeYYYMMDD);"> |
|
| 95 |
- <input style="width:auto;min-width: 83px;" type="text" class="date_format" name="ntceEnddeYYYMMDD" id="ntceEnddeYYYMMDD" size="4" maxlength="4" readonly="" |
|
| 96 |
- value="<c:out value="${searchVO.ntceEndde}" />"
|
|
| 97 |
- > |
|
| 98 |
- <input type="button" class="calBtn"> |
|
| 99 |
- </a> |
|
| 100 |
- <a href="#" style="margin-left: 17px;" onclick="init_date(); return false;"> |
|
| 101 |
- <img src="/pb/img/common/topTimeOut.png" alt="타임아웃 아이콘"> |
|
| 102 |
- </a> |
|
| 103 |
- <input type="button" class="btnType1" style="margin-left:10px;" value="검색" onclick="fn_search(); return false;"> --%> |
|
| 93 |
+ <select id="sendKind" name="sendKind" onchange="linkPage();"> |
|
| 94 |
+ <option value=""<c:if test="${searchVO.sendKind eq ''}">selected="selected"</c:if>>발송방식 전체</option>
|
|
| 95 |
+ <option value="H"<c:if test="${searchVO.sendKind eq 'H'}">selected="selected"</c:if>>WEB</option>
|
|
| 96 |
+ <option value="A"<c:if test="${searchVO.sendKind eq 'A'}">selected="selected"</c:if>>API</option>
|
|
| 97 |
+ </select> |
|
| 104 | 98 |
<select id="searchYear" name="searchYear" onchange="linkPage();"></select> |
| 105 |
- <br/><br/> |
|
| 106 |
- <c:if test="${sttstDate ne '' and sttstDate ne null }">
|
|
| 107 |
- (집계 일시 : ${sttstDate}(금일))
|
|
| 108 |
- </c:if> |
|
| 109 | 99 |
</div> |
| 110 |
- <%-- <div class="listTop"> |
|
| 111 |
- <p class="tType5">총 <span class="tType4 c_456ded fwBold"><fmt:formatNumber value="${paginationInfo.totalRecordCount}" pattern="#,###" /></span>건</p>
|
|
| 112 |
- </div> --%> |
|
| 100 |
+ <div class="listTop"> |
|
| 101 |
+ <p class="tType5"> |
|
| 102 |
+ <c:if test="${sttstDate ne '' and sttstDate ne null }">
|
|
| 103 |
+ (집계 일시 : ${sttstDate}(금일))
|
|
| 104 |
+ </c:if> |
|
| 105 |
+ </p> |
|
| 106 |
+ </div> |
|
| 113 | 107 |
<div class="tableWrap"> |
| 114 | 108 |
<table class="tbType1"> |
| 115 | 109 |
<colgroup> |
| 116 |
- <col style="width: auto;"> |
|
| 117 | 110 |
<col style="width: 25%"> |
| 118 |
- <col style="width: 25%"> |
|
| 119 |
- <col style="width: 25%"> |
|
| 111 |
+ <col style="width: 25%" class="all"> |
|
| 112 |
+ <col style="width: 25%" class="homePage"> |
|
| 113 |
+ <col style="width: 25%" class="api"> |
|
| 114 |
+ <col style="width: 25%" class="all"> |
|
| 115 |
+ <col style="width: 25%" class="homePage"> |
|
| 116 |
+ <col style="width: 25%" class="api"> |
|
| 117 |
+ <col style="width: 25%" class="all"> |
|
| 118 |
+ <col style="width: 25%" class="homePage"> |
|
| 119 |
+ <col style="width: 25%" class="api"> |
|
| 120 | 120 |
</colgroup> |
| 121 | 121 |
<thead> |
| 122 | 122 |
<tr> |
| 123 |
- <th>발송월</th> |
|
| 124 |
- <th>발송건수</th> |
|
| 125 |
- <th>성공건수</th> |
|
| 126 |
- <th>성공율</th> |
|
| 123 |
+ <th rowspan="2" style="vertical-align: middle;">발송일</th> |
|
| 124 |
+ <th id="sendHead">발송건수</th> |
|
| 125 |
+ <th id="successHead">성공건수</th> |
|
| 126 |
+ <th id="rateHead">성공율</th> |
|
| 127 |
+ </tr> |
|
| 128 |
+ <tr> |
|
| 129 |
+ <th class="all">전체</th> |
|
| 130 |
+ <th class="homePage">WEB</th> |
|
| 131 |
+ <th class="api">API</th> |
|
| 132 |
+ <th class="all">전체</th> |
|
| 133 |
+ <th class="homePage">WEB</th> |
|
| 134 |
+ <th class="api">API</th> |
|
| 135 |
+ <th class="all">전체</th> |
|
| 136 |
+ <th class="homePage">WEB</th> |
|
| 137 |
+ <th class="api">API</th> |
|
| 127 | 138 |
</tr> |
| 128 | 139 |
</thead> |
| 129 | 140 |
<tbody> |
| 130 | 141 |
<c:forEach var="result" items="${resultList}" varStatus="status">
|
| 131 | 142 |
<tr> |
| 132 |
- <td><c:out value="${result.regDate}"/></td>
|
|
| 133 |
- <td><fmt:formatNumber value="${result.sendCount}" pattern="#,###" /></td>
|
|
| 134 |
- <td><fmt:formatNumber value="${result.successCount}" pattern="#,###" /></td>
|
|
| 135 |
- <td><fmt:formatNumber value="${(result.successCount / result.sendCount) * 100}" pattern="#,###" />%</td>
|
|
| 143 |
+ <td> |
|
| 144 |
+ <c:out value="${result.regDate}"/>
|
|
| 145 |
+ </td> |
|
| 146 |
+ <td class="all"> |
|
| 147 |
+ <fmt:formatNumber value="${result.totalSendCount}" pattern="#,###" />
|
|
| 148 |
+ </td> |
|
| 149 |
+ <td class="homePage"> |
|
| 150 |
+ <fmt:formatNumber value="${result.sendCount}" pattern="#,###" />
|
|
| 151 |
+ </td> |
|
| 152 |
+ <td class="api"> |
|
| 153 |
+ <fmt:formatNumber value="${result.aSendCount}" pattern="#,###" />
|
|
| 154 |
+ </td> |
|
| 155 |
+ |
|
| 156 |
+ <td class="all"> |
|
| 157 |
+ <fmt:formatNumber value="${result.totalSuccessCount}" pattern="#,###" />
|
|
| 158 |
+ </td> |
|
| 159 |
+ <td class="homePage"> |
|
| 160 |
+ <fmt:formatNumber value="${result.successCount}" pattern="#,###" />
|
|
| 161 |
+ </td> |
|
| 162 |
+ <td class="api"> |
|
| 163 |
+ <fmt:formatNumber value="${result.aSuccessCount}" pattern="#,###" />
|
|
| 164 |
+ </td> |
|
| 165 |
+ |
|
| 166 |
+ <td class="all"> |
|
| 167 |
+ <fmt:formatNumber value="${result.rateTotalSuccessCount}" pattern="#,###" />%
|
|
| 168 |
+ </td> |
|
| 169 |
+ <td class="homePage"> |
|
| 170 |
+ <fmt:formatNumber value="${result.rateSuccessCount}" pattern="#,###.##" />%
|
|
| 171 |
+ </td> |
|
| 172 |
+ <td class="api"> |
|
| 173 |
+ <fmt:formatNumber value="${result.rateApiSuccessCount}" pattern="#,###" />%
|
|
| 174 |
+ </td> |
|
| 136 | 175 |
</tr> |
| 137 | 176 |
</c:forEach> |
| 138 | 177 |
<c:if test="${empty resultList}">
|
| 139 |
- <tr><td colspan="4"><spring:message code="common.nodata.msg" /></td></tr> |
|
| 140 |
- </c:if> |
|
| 178 |
+ <tr> |
|
| 179 |
+ <td colspan="10"><spring:message code="common.nodata.msg" /></td> |
|
| 180 |
+ </tr> |
|
| 181 |
+ </c:if> |
|
| 141 | 182 |
</tbody> |
| 142 | 183 |
</table> |
| 143 | 184 |
</div> |
... | ... | @@ -145,5 +186,3 @@ |
| 145 | 186 |
</div> |
| 146 | 187 |
</form> |
| 147 | 188 |
</compress:html> |
| 148 |
-</body> |
|
| 149 |
-</html> |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?