diff --git a/WebContent/jsp/onl/kjb/statistics/apiUseStatsMan.jsp b/WebContent/jsp/onl/kjb/statistics/apiUseStatsMan.jsp index 8e6fa56..49d9b70 100644 --- a/WebContent/jsp/onl/kjb/statistics/apiUseStatsMan.jsp +++ b/WebContent/jsp/onl/kjb/statistics/apiUseStatsMan.jsp @@ -242,6 +242,10 @@ search(); }); + $("input[name=searchType]").click(function() { + search(); + }); + $("#btn_excel").click(function() { exportToExcel(); }); diff --git a/src/main/java/com/eactive/eai/rms/ext/djb/statistics/ApiUseStatsService.java b/src/main/java/com/eactive/eai/rms/ext/djb/statistics/ApiUseStatsService.java index 7e6fc01..fa4ed1c 100644 --- a/src/main/java/com/eactive/eai/rms/ext/djb/statistics/ApiUseStatsService.java +++ b/src/main/java/com/eactive/eai/rms/ext/djb/statistics/ApiUseStatsService.java @@ -61,13 +61,12 @@ public class ApiUseStatsService private Query getDataQuery(ApiStatsSearch search) { - StringBuilder where = buildNativeWhere(search); String dataSql = ""; if ("ORG".equals(search.getSearchType())) { dataSql = "SELECT COUNT(*) OVER () AS RECORDS " - + ", B.ORGNAME" + + ", NVL(B.ORGNAME, D.ORG_NAME) AS ORGNAME" + ", SUM(A.TOTAL_CNT)" + ", SUM(A.SUCCESS_CNT)" + ", CASE WHEN SUM(A.TOTAL_CNT) > 0 THEN SUM(A.SUCCESS_CNT) * 100 / SUM(A.TOTAL_CNT) ELSE NULL END" @@ -77,13 +76,41 @@ public class ApiUseStatsService + ", CASE WHEN SUM(A.TOTAL_CNT) > 0 THEN TRUNC(SUM(A.TOTAL_CNT * A.AVG_RESP_TIME) / SUM(A.TOTAL_CNT)) ELSE NULL END" + ", MIN(A.MIN_RESP_TIME)" + ", MAX(A.MAX_RESP_TIME)" - + " FROM API_STATS_DAY A" + + " FROM (" + + " SELECT A.STAT_TIME " + + " , A.API_NAME" + + " , A.CLIENT_ID " + + " , A.TOTAL_CNT" + + " , A.SUCCESS_CNT" + + " , A.AVG_RESP_TIME" + + " , A.TIMEOUT_CNT" + + " , A.SYSTEM_ERR_CNT" + + " , A.MIN_RESP_TIME" + + " , A.MAX_RESP_TIME" + + " , CASE WHEN API_NAME LIKE '%1' THEN SUBSTR(INBOUND_ADAPTER,2,3) ELSE SUBSTR(OUTBOUND_ADAPTER,2,3) END AS ORG_CODE" + + " FROM API_STATS_DAY A " + + " WHERE A.STAT_TIME >= :searchStartDate " + + " AND A.STAT_TIME <= :searchEndDate "; + + + if (StringUtils.isNotBlank(search.getSearchApiName())) { + dataSql += " AND A.API_NAME LIKE :searchApiName "; + } + + dataSql += " ) A" + " LEFT OUTER JOIN TSEAIAU01 B ON A.CLIENT_ID = B.CLIENTID" - + " LEFT OUTER JOIN TSEAIHE01 C ON A.API_NAME = C.EAISVCNAME " - + where - + " GROUP BY B.ORGNAME" - + " ORDER BY ORGNAME"; - } else if ("API".equals(search.getSearchType())) { + + " LEFT OUTER JOIN EMSAPP.PTL_ORG D ON A.ORG_CODE = D.ORG_CODE" + + " WHERE 1=1 "; + + if (StringUtils.isNotBlank(search.getSearchOrgName())) { + dataSql += " AND UPPER(NVL(B.ORGNAME, D.ORG_NAME)) LIKE :searchOrgName "; + } + + dataSql += " GROUP BY NVL(B.ORGNAME, D.ORG_NAME)" + + " ORDER BY ORGNAME"; + + } + else if ("API".equals(search.getSearchType())) { dataSql = "SELECT COUNT(*) OVER () AS RECORDS " + ", A.API_NAME" + ", SUM(A.TOTAL_CNT)" @@ -97,11 +124,11 @@ public class ApiUseStatsService + ", MAX(A.MAX_RESP_TIME)" + " FROM API_STATS_DAY A " + " LEFT OUTER JOIN TSEAIAU01 B ON A.CLIENT_ID = B.CLIENTID" - + " LEFT OUTER JOIN TSEAIHE01 C ON A.API_NAME = C.EAISVCNAME " + where + " GROUP BY A.API_NAME" + " ORDER BY API_NAME"; - } else if ("DATE".equals(search.getSearchType())) { + } + else if ("DATE".equals(search.getSearchType())) { dataSql = "SELECT COUNT(*) OVER () AS RECORDS " + ", TO_CHAR(STAT_TIME,'YYYY-MM-DD') AS STAT_TIME " + ", SUM(A.TOTAL_CNT)" @@ -115,23 +142,24 @@ public class ApiUseStatsService + ", MAX(A.MAX_RESP_TIME)" + " FROM API_STATS_DAY A " + " LEFT OUTER JOIN TSEAIAU01 B ON A.CLIENT_ID = B.CLIENTID" - + " LEFT OUTER JOIN TSEAIHE01 C ON A.API_NAME = C.EAISVCNAME " + where + " GROUP BY TO_CHAR(STAT_TIME,'YYYY-MM-DD')" + " ORDER BY STAT_TIME"; } Query dataQuery = entityManager.createNativeQuery(dataSql); - if (search.getParsedStartDate() != null) { - dataQuery.setParameter("searchStartDate", search.getParsedStartDate()); - dataQuery.setParameter("searchEndDate", search.getParsedEndDate()); + + + dataQuery.setParameter("searchStartDate", search.getParsedStartDate()); + dataQuery.setParameter("searchEndDate", search.getParsedEndDate()); + + if (StringUtils.isNotBlank(search.getSearchApiName())) { + dataQuery.setParameter("searchApiName", "%" + search.getSearchApiName().toUpperCase() + "%"); } if (StringUtils.isNotBlank(search.getSearchOrgName())) { dataQuery.setParameter("searchOrgName", "%" + search.getSearchOrgName().toUpperCase() + "%"); } - if (StringUtils.isNotBlank(search.getSearchApiName())) { - dataQuery.setParameter("searchApiName", "%" + search.getSearchApiName().toUpperCase() + "%"); - } + return dataQuery; } @@ -163,17 +191,15 @@ public class ApiUseStatsService calculateDateRange(search); - if (search.getParsedStartDate() != null) { - where.append(" AND A.STAT_TIME >= :searchStartDate "); - where.append(" AND A.STAT_TIME <= :searchEndDate "); - } - - if (StringUtils.isNotBlank(search.getSearchOrgName())) { - where.append(" AND UPPER(B.ORGNAME) LIKE :searchOrgName "); - } + where.append(" AND A.STAT_TIME >= :searchStartDate "); + where.append(" AND A.STAT_TIME <= :searchEndDate "); if (StringUtils.isNotBlank(search.getSearchApiName())) { - where.append(" AND UPPER(C.EAISVCDESC) LIKE :searchApiName "); + where.append(" AND A.API_NAME LIKE :searchApiName "); + } + + if (StringUtils.isNotBlank(search.getSearchOrgName())) { + where.append(" AND UPPER(B.ORGNAME) LIKE :searchOrgName "); } return where;