통계관리 월문자발송건수 내역 API 수정

This commit is contained in:
name 2023-07-31 10:44:42 +09:00
parent 25dacf7516
commit abcbbf05cc
4 changed files with 131 additions and 78 deletions

View File

@ -170,12 +170,13 @@ public class MjonMsgVO extends ComDefaultVO{
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 class MjonMsgVO extends ComDefaultVO{
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;

View File

@ -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>

View File

@ -233,7 +233,7 @@ function fnSetCalMonth(val) {
</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="#,###" />%

View File

@ -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 @@ $(document).ready(function(){
}
/* $('#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 @@ $(document).ready(function(){
cursor: pointer;
}
</style>
</head>
<body>
<compress:html>
@ -84,60 +90,95 @@ $(document).ready(function(){
<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 @@ $(document).ready(function(){
</div>
</form>
</compress:html>
</body>
</html>