Browse Source

오픈 api 통계 현황 백단 추가

junekeunsong 4 years ago
parent
commit
9b7f87d08e

+ 4 - 0
src/main/java/com/lemon/lifecenter/controller/ApiMonitoringController.java

@@ -128,6 +128,8 @@ public class ApiMonitoringController extends LifeCenterController {
         dto.setEndDate(endDate);
         dto.setStartDate(startDate);
         
+        List<LocationDTO> locationList = centerService.selectLocation();
+        List<ApiMonitorDTO> stateDate = monitorService.selectStatisticsState(dto);
         List<ApiMonitorDTO> charList = monitorService.selectStatisticsChart(dto);
         
         ModelAndView mv = setMV("api/monitor/chart");
@@ -135,6 +137,8 @@ public class ApiMonitoringController extends LifeCenterController {
         mv.addObject("endDate", endDate);
         mv.addObject("locationCode", locationCode);
         mv.addObject("centerName", centerName);
+        mv.addObject("locationList", locationList);
+        mv.addObject("state", stateDate);
         mv.addObject("chart", charList);
         return mv;
     }

+ 1 - 0
src/main/java/com/lemon/lifecenter/mapper/ApiMonitorMapper.java

@@ -13,4 +13,5 @@ public interface ApiMonitorMapper {
     public int selectApiStatisticsCount(ApiMonitorDTO dto);
     public List<ApiMonitorDTO> selectApiStatistics(ApiMonitorDTO dto);
     public List<ApiMonitorDTO> selectStatisticsChart(ApiMonitorDTO dto);
+    public List<ApiMonitorDTO> selectStatisticsState(ApiMonitorDTO dto);
 }

+ 4 - 0
src/main/java/com/lemon/lifecenter/service/ApiMonitorService.java

@@ -23,4 +23,8 @@ public class ApiMonitorService {
     public List<ApiMonitorDTO> selectStatisticsChart(ApiMonitorDTO dto) {
         return mapper.selectStatisticsChart(dto);
     }
+    
+    public List<ApiMonitorDTO> selectStatisticsState(ApiMonitorDTO dto) {
+        return mapper.selectStatisticsState(dto);
+    }
 }

+ 64 - 15
src/main/resources/mybatis/mapper/api/apiMonitor.xml

@@ -71,21 +71,70 @@
     </select>
     <select id="selectStatisticsChart" parameterType="ApiMonitorDTO" resultType="ApiMonitorDTO">
         <![CDATA[
-            SELECT A.inDate AS inDate,
-                      IFNULL( B.create_date, 0 ) AS createDate,
-                      IFNULL(  B.total, 0 ) AS total
-             FROM ( SELECT TO_CHAR(TO_DATE( #{startDate} ) + LEVEL - 1, 'YYYY-MM-DD') AS inDate
-                          FROM DB_ROOT
-                     CONNECT BY LEVEL <= ( TO_DATE( DATE_FORMAT( #{endDate}, '%Y-%m-%d' ) ) - TO_DATE( #{startDate} ) + 1)
-                         ORDER BY inDate DESC
-                        ) A
-               LEFT JOIN (  SELECT DATE_FORMAT( create_date,  '%Y-%m-%d' ) AS create_date,
-                                            SUM(api_count) AS total
-                                   FROM api_statistics
-                                  WHERE result = 'success' 
-                                  GROUP BY DATE_FORMAT( create_date,  '%Y-%m-%d' )
-                               ) B
-                ON DATE_FORMAT( B.create_date, '%Y-%m-%d' ) = A.inDate
+            SELECT A.INDATE AS inDate,
+                   IFNULL( B.CREATE_DATE, 0 ) AS createDate,
+                   IFNULL(  B.TOTAL, 0 ) AS total
+              FROM ( SELECT TO_CHAR(TO_DATE( '2021-02-15' ) + LEVEL - 1, 'YYYY-MM-DD') AS inDate
+                       FROM DB_ROOT
+                    CONNECT BY LEVEL <= ( TO_DATE( DATE_FORMAT( '2021-02-17', '%Y-%m-%d' ) ) - TO_DATE( '2021-02-15' ) + 1)
+                      ORDER BY INDATE DESC
+                   ) A
+              LEFT JOIN ( SELECT DATE_FORMAT( AST.CREATE_DATE,  '%Y-%m-%d' ) AS create_date,
+                                 SUM(AST.API_COUNT) AS total
+                            FROM API_STATISTICS AST
+                            LEFT JOIN CENTER_INFO CI
+                              ON AST.CENTER_CODE = CI.CENTER_CODE
+                            LEFT JOIN LOCATION_INFO LI
+                              ON AST.LOCATION_CODE = LI.LOCATION_CODE
+                           WHERE AST.result = 'success'
         ]]>
+        <if test='locationCode != null and locationCode != ""'>
+            <![CDATA[
+                AND LI.LOCATION_CODE = #{locationCode}
+            ]]>
+        </if>
+        <if test='centerName != null and centerName != ""'>
+            <![CDATA[
+                AND CI.CENTER_NAME LIKE CONCAT('%', #{centerName}, '%')
+            ]]>
+        </if>
+        <![CDATA[
+                           GROUP BY DATE_FORMAT( AST.CREATE_DATE,  '%Y-%m-%d' )
+                        ) B
+                ON DATE_FORMAT( B.CREATE_DATE, '%Y-%m-%d' ) = A.INDATE
+             ORDER BY A.INDATE ASC
+        ]]>
+    </select>
+    <select id="selectStatisticsState" parameterType="ApiMonitorDTO" resultType="ApiMonitorDTO">
+        <![CDATA[
+            SELECT COUNT(DISTINCT(AM.CENTER_CODE))   AS total,
+                   COUNT(DISTINCT (AST.CENTER_CODE)) AS apiCount,
+                   SUM(API_COUNT)                    AS numberOfCase
+              FROM API_STATISTICS AST
+              LEFT JOIN CENTER_INFO CI
+                ON AST.CENTER_CODE = CI.CENTER_CODE
+              LEFT JOIN LOCATION_INFO LI
+                ON AST.LOCATION_CODE = LI.LOCATION_CODE
+              LEFT JOIN API_MANAGER AM
+                ON AST.CENTER_CODE = AM.CENTER_CODE
+               AND AM.USE_YN = 'C'
+             WHERE 1 = 1
+               AND result = 'success'
+        ]]>
+        <if test='locationCode != null and locationCode != ""'>
+            <![CDATA[
+                AND LI.LOCATION_CODE = #{locationCode}
+            ]]>
+        </if>
+        <if test='centerName != null and centerName != ""'>
+            <![CDATA[
+                AND CI.CENTER_NAME LIKE CONCAT('%', #{centerName}, '%')
+            ]]>
+        </if>
+        <if test='startDate != null and startDate != "" and endDate != null and endDate != ""'>
+            <![CDATA[
+                AND DATE_FORMAT(AST.CREATE_DATE, '%Y-%m-%d') BETWEEN #{startDate} AND #{endDate}
+            ]]>
+        </if>
     </select>
 </mapper>