Ver código fonte

차트 데이터 맵핑

junekeunsong 4 anos atrás
pai
commit
00545416d4

+ 26 - 1
src/main/java/com/lemon/lifecenter/controller/ApiMonitoringController.java

@@ -14,6 +14,7 @@ import org.springframework.web.servlet.ModelAndView;
 
 import com.lemon.lifecenter.common.LifeCenterConfigVO;
 import com.lemon.lifecenter.common.LifeCenterController;
+import com.lemon.lifecenter.common.LifeCenterFunction;
 import com.lemon.lifecenter.common.LifeCenterPaging;
 import com.lemon.lifecenter.dto.ApiMonitorDTO;
 import com.lemon.lifecenter.dto.CenterInfoDTO;
@@ -74,8 +75,32 @@ public class ApiMonitoringController extends LifeCenterController {
     }
     
     @RequestMapping("/chart")
-    public ModelAndView chart() {
+    public ModelAndView chart(@ModelAttribute("dto") ApiMonitorDTO dto,
+            @RequestParam(value="centerName", required=false, defaultValue="") String centerName,
+            @RequestParam(value="locationCode", required=false, defaultValue="") String locationCode,
+            @RequestParam(value="startDate", required=false, defaultValue="") String startDate,
+            @RequestParam(value="endDate", required=false, defaultValue="") String endDate) {
+        
+        if( endDate.equals( "" ) ) {
+            endDate = LifeCenterFunction.getNow( "yyyy-MM-dd" );
+        }
+        
+        if( startDate.equals( "" ) ) {
+            //기록상 최초 환자 입소일 이후부터 계산
+            startDate = "2021-02-15";
+        }
+        
+        dto.setEndDate(endDate);
+        dto.setStartDate(startDate);
+        
+        List<ApiMonitorDTO> charList = monitorService.selectStatisticsChart(dto);
+        
         ModelAndView mv = setMV("api/monitor/chart");
+        mv.addObject("startDate", startDate);
+        mv.addObject("endDate", endDate);
+        mv.addObject("locationCode", locationCode);
+        mv.addObject("centerName", centerName);
+        mv.addObject("chart", charList);
         return mv;
     }
     

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

@@ -12,4 +12,5 @@ import com.lemon.lifecenter.dto.ApiMonitorDTO;
 public interface ApiMonitorMapper {
     public int selectApiStatisticsCount(ApiMonitorDTO dto);
     public List<ApiMonitorDTO> selectApiStatistics(ApiMonitorDTO dto);
+    public List<ApiMonitorDTO> selectStatisticsChart(ApiMonitorDTO dto);
 }

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

@@ -20,4 +20,7 @@ public class ApiMonitorService {
     public List<ApiMonitorDTO> selectApiStatistics(ApiMonitorDTO dto) {
         return mapper.selectApiStatistics(dto);
     }
+    public List<ApiMonitorDTO> selectStatisticsChart(ApiMonitorDTO dto) {
+        return mapper.selectStatisticsChart(dto);
+    }
 }

+ 19 - 0
src/main/resources/mybatis/mapper/api/apiMonitor.xml

@@ -69,4 +69,23 @@
              LIMIT ${limit}, ${limitMax}
         ]]>
     </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>
 </mapper>