Sfoglia il codice sorgente

首页相关数据处理

wukai 8 mesi fa
parent
commit
85bd98cb3c

+ 10 - 102
jjt-biz/src/main/java/com/jjt/biz/controller/AlarmRecordController.java

@@ -14,7 +14,6 @@ import com.jjt.system.service.ISysDictDataService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import org.springframework.format.annotation.DateTimeFormat;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -71,74 +70,21 @@ public class AlarmRecordController extends BaseController {
 
     @ApiOperation("业务类型统计")
     @GetMapping("/list/bizType")
-    public AjaxResult listBizType(@ApiParam(value = "开始时间yyyy-mm-dd")  String start, @ApiParam(value = "结束时间yyyy-mm-dd") String end) {
-        List<BizTypeVO> list = new ArrayList();
-        String sql = "SELECT b.obj_type,COUNT(*) num FROM alarm_record a,biz_obj b WHERE a.obj_id=b.obj_id";
-        Vector<Object> v = new Vector<>();
-        if (start != null && end != null) {
-            sql += " AND a.alarm_time BETWEEN ? AND ?";
-            v.add(start);
-            v.add(end + " 23:59:59");
-        }
-        sql += " GROUP BY b.obj_type";
-        List<Map<String, Object>> results = jdbcTemplate.queryForList(sql, v.toArray());
-        results.forEach(map -> {
-            BizTypeVO ls = new BizTypeVO();
-
-            String obj_type = (String) map.get("obj_type");
-            ls.setId(obj_type);
-            ls.setName(sysDictDataService.selectDictLabel("biz_type", obj_type));
-            ls.setNum((Long) map.get("num"));
-            list.add(ls);
-        });
-//        测试数据
-//        String[] names = {"mysql", "基础支撑", "运行环境", "ES搜索服务", "nginx", "redis", "负载均衡", "其他", "JAVA应用"};
-//        for (int i = 0; i < names.length; i++) {
-//            BizTypeVO vo = new BizTypeVO();
-//            vo.setBizType(names[i]);
-//            long num = Long.valueOf(new Random().nextInt(200) + 10);
-//            vo.setNum(num);
-//            list.add(vo);
-//        }
-
-        list.sort(Comparator.comparing(BizTypeVO::getNum));
+    public AjaxResult listBizType(@ApiParam(value = "开始时间yyyy-mm-dd") String start, @ApiParam(value = "结束时间yyyy-mm-dd") String end) {
+        List<BizTypeVO> list = alarmRecordService.listBizType(start, end);
         return AjaxResult.success(list);
     }
 
     @ApiOperation("业务组件统计")
     @GetMapping("/list/bizObj")
-    public AjaxResult listBizObj(@ApiParam(value = "业务类型") String type, @ApiParam(value = "开始时间yyyy-mm-dd")  String start, @ApiParam(value = "结束时间yyyy-mm-dd") String end) {
-        List<BizTypeVO> list = new ArrayList();
-        String sql = "SELECT b.obj_id,b.obj_name,COUNT(*) num FROM alarm_record a,biz_obj b WHERE a.obj_id=b.obj_id";
-        Vector<Object> v = new Vector<>();
-        if (StringUtils.isNotEmpty(type)) {
-            sql += " AND b.obj_type=?";
-            v.add(type);
-        }
-        if (start != null && end != null) {
-            sql += " AND a.alarm_time BETWEEN ? AND ?";
-            v.add(start);
-            v.add(end + " 23:59:59");
-        }
-        sql += " GROUP BY b.obj_id,b.obj_name";
-        List<Map<String, Object>> results = jdbcTemplate.queryForList(sql, v.toArray());
-        results.forEach(map -> {
-            BizTypeVO ls = new BizTypeVO();
-            String obj_name = (String) map.get("obj_name");
-            int obj_id = (int) map.get("obj_id");
-            ls.setId(obj_id + "");
-            ls.setName(obj_name);
-            ls.setNum((Long) map.get("num"));
-            list.add(ls);
-        });
-
-        list.sort(Comparator.comparing(BizTypeVO::getNum));
+    public AjaxResult listBizObj(@ApiParam(value = "业务类型") String type, @ApiParam(value = "开始时间yyyy-mm-dd") String start, @ApiParam(value = "结束时间yyyy-mm-dd") String end) {
+        List<BizTypeVO> list = alarmRecordService.listBizObj(type,start, end);
         return AjaxResult.success(list);
     }
 
     @ApiOperation("业务指标统计")
     @GetMapping("/list/getMetrics")
-    public AjaxResult getMetrics(@ApiParam(value = "对象ID") Long objId, @ApiParam(value = "开始时间yyyy-mm-dd")  String start, @ApiParam(value = "结束时间yyyy-mm-dd") String end) {
+    public AjaxResult getMetrics(@ApiParam(value = "对象ID") Long objId, @ApiParam(value = "开始时间yyyy-mm-dd") String start, @ApiParam(value = "结束时间yyyy-mm-dd") String end) {
         List<BizTypeVO> list = new ArrayList();
         String sql = "SELECT a.obj_metrics_id,b.metrics_name,COUNT(*) num FROM alarm_record a,biz_obj_metrics b WHERE a.obj_metrics_id=b.obj_metrics_id";
         Vector<Object> v = new Vector<>();
@@ -168,7 +114,7 @@ public class AlarmRecordController extends BaseController {
 
     @ApiOperation("应用组件统计")
     @GetMapping("/list/bizSort")
-    public AjaxResult listBizSort(@ApiParam(value = "分类") String bizType, @ApiParam(value = "开始时间yyyy-mm-dd")  String start, @ApiParam(value = "结束时间yyyy-mm-dd") String end) {
+    public AjaxResult listBizSort(@ApiParam(value = "分类") String bizType, @ApiParam(value = "开始时间yyyy-mm-dd") String start, @ApiParam(value = "结束时间yyyy-mm-dd") String end) {
         List<BizSortVO> list = new ArrayList();
 //          暂时使用模拟数据
         String sql = "SELECT a.obj_id,b.obj_name,b.obj_type,COUNT(*) num FROM alarm_record a,biz_obj b WHERE a.obj_id=b.obj_id";
@@ -203,7 +149,7 @@ public class AlarmRecordController extends BaseController {
 
     @ApiOperation("系统压力排名")
     @GetMapping("/list/bizAccess")
-    public AjaxResult listBizAccess(@ApiParam(value = "开始时间yyyy-mm-dd")  String start, @ApiParam(value = "结束时间yyyy-mm-dd") String end) {
+    public AjaxResult listBizAccess(@ApiParam(value = "开始时间yyyy-mm-dd") String start, @ApiParam(value = "结束时间yyyy-mm-dd") String end) {
         List<BizAccessVO> list = new ArrayList<>();
 //        //还是得先用模拟数据。
         String sql = "SELECT model_id,model_name FROM biz_model";
@@ -262,7 +208,7 @@ public class AlarmRecordController extends BaseController {
 
     @ApiOperation("组件告警数量排名")
     @GetMapping("/list/objAlarm")
-    public AjaxResult objAlarm(@ApiParam(value = "对象ID") Long modelId, @ApiParam(value = "开始时间yyyy-mm-dd")  String start, @ApiParam(value = "结束时间yyyy-mm-dd") String end) {
+    public AjaxResult objAlarm(@ApiParam(value = "对象ID") Long modelId, @ApiParam(value = "开始时间yyyy-mm-dd") String start, @ApiParam(value = "结束时间yyyy-mm-dd") String end) {
 
         List<BizSortVO> list = new ArrayList();
         String sql = "SELECT a.obj_id,c.obj_name,COUNT(*) num FROM alarm_record a,biz_model_detail b,biz_obj c WHERE a.obj_id=b.obj_id AND b.obj_id=c.obj_id";
@@ -293,48 +239,10 @@ public class AlarmRecordController extends BaseController {
 
     @ApiOperation("组件压力排名")
     @GetMapping("/list/objAccess")
-    public AjaxResult objAccess(@ApiParam(value = "对象ID") Long modelId, @ApiParam(value = "开始时间yyyy-mm-dd")  String start, @ApiParam(value = "结束时间yyyy-mm-dd") String end) {
+    public AjaxResult objAccess(@ApiParam(value = "对象ID") Long modelId, @ApiParam(value = "开始时间yyyy-mm-dd") String start, @ApiParam(value = "结束时间yyyy-mm-dd") String end) {
 //        依然得用模拟数据
         Map<String, Object> result = new HashMap<>(16);
-        List<BizAccessVO> list = new ArrayList<>();
-
-        String sql = "SELECT b.OBJ_ID,c.OBJ_NAME FROM biz_model_detail b,biz_obj c WHERE b.obj_id=c.obj_id AND c.OBJ_TYPE=1";
-        sql += " AND b.model_id=?";
-        sql += " GROUP BY b.OBJ_ID,c.obj_name";
-
-        List<Map<String, Object>> objList = jdbcTemplate.queryForList(sql, modelId);
-        objList.forEach(map -> {
-            BizAccessVO vo = new BizAccessVO();
-            Integer objId = (Integer) map.get("OBJ_ID");
-            String objName = (String) map.get("OBJ_NAME");
-            Vector<Object> v = new Vector<>();
-            v.add(objId);
-            String totSql = "SELECT IFNULL(SUM(D_VALUE),0) FROM biz_obj_metrics_data " +
-                    "WHERE obj_metrics_id IN(" +
-                    "SELECT obj_metrics_id FROM biz_obj_metrics" +
-                    " WHERE metrics_id =(SELECT metrics_id FROM metrics_def WHERE metrics_code='pp.tot')" +
-                    " AND obj_id =?)";
-            String errSql = "SELECT IFNULL(SUM(D_VALUE),0) FROM biz_obj_metrics_data " +
-                    "WHERE obj_metrics_id IN(" +
-                    "SELECT obj_metrics_id FROM biz_obj_metrics" +
-                    " WHERE metrics_id =(SELECT metrics_id FROM metrics_def WHERE metrics_code='pp.error')" +
-                    " AND obj_id =?)";
-
-            if (start != null && end != null) {
-                totSql += " AND CREATE_TIME BETWEEN ? AND ?";
-                errSql += " AND CREATE_TIME BETWEEN ? AND ?";
-                v.add(start);
-                v.add(end + " 23:59:59");
-            }
-
-            Long access = jdbcTemplate.queryForObject(totSql, Long.class, v.toArray());
-            Long num = jdbcTemplate.queryForObject(errSql, Long.class, v.toArray());
-
-            vo.setModelName(objName);
-            vo.setAccess(access);
-            vo.setNum(num);
-            list.add(vo);
-        });
+        List<BizAccessVO> list = alarmRecordService.objAccess(modelId,start,end);
 
         List<Map<String, Object>> dataList = new ArrayList<>();
         //获取趋势

+ 108 - 41
jjt-biz/src/main/java/com/jjt/biz/controller/IndexController.java

@@ -1,14 +1,16 @@
 package com.jjt.biz.controller;
 
-import com.jjt.biz.domain.BizObjMetrics;
-import com.jjt.biz.domain.IndexMetrics;
-import com.jjt.biz.service.IBizObjMetricsService;
-import com.jjt.biz.service.IIndexMetricsService;
+import com.jjt.biz.domain.*;
+import com.jjt.biz.service.*;
+import com.jjt.biz.vo.BizAccessVO;
+import com.jjt.biz.vo.BizTypeVO;
 import com.jjt.biz.vo.HlScoreVO;
+import com.jjt.biz.vo.ScoreVO;
 import com.jjt.common.core.controller.BaseController;
 import com.jjt.common.core.domain.AjaxResult;
 import com.jjt.common.core.page.TableDataInfo;
 import com.jjt.common.utils.DateUtils;
+import com.jjt.hl.domain.HlScore;
 import com.jjt.hl.service.IHlScoreService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -19,8 +21,10 @@ import javax.annotation.Resource;
 import java.text.DecimalFormat;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
-import java.time.ZoneOffset;
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 业务对象Controller
@@ -38,6 +42,12 @@ public class IndexController extends BaseController {
     private IBizObjMetricsService omService;
     @Resource
     private IHlScoreService scoreService;
+    @Resource
+    private IBizModelService bizModelService;
+    @Resource
+    private IBizObjMetricsDataService dataService;
+    @Resource
+    private IAlarmRecordService alarmRecordService;
 
     String[] MODEL_NAMES = {"市场服务", "市场出清", "信息发布", "市场合规", "市场结算"};
 
@@ -95,16 +105,28 @@ public class IndexController extends BaseController {
     @GetMapping("/hl/day/{date}")
     public AjaxResult hlDay(@ApiParam(value = "时间(yyyy-mm-dd", required = true) @PathVariable("date") Date date) {
         List<Map<String, Object>> result = new ArrayList<>();
-        for (int i = 0; i < MODEL_NAMES.length; i++) {
+        HlScore search = new HlScore();
+        search.setHlType("1");
+        Map<String, Object> params = new HashMap<>(16);
+        params.put("beginTime", DateUtils.parseDateToStr("yyyy-MM-dd", date) + " 00:00:00");
+        params.put("endTime", DateUtils.parseDateToStr("yyyy-MM-dd", date) + " 23:59:59");
+        search.setParams(params);
+
+        List<HlScore> list = scoreService.selectHlScoreList(search);
+        Map<Long, List<HlScore>> resultMap = list.stream().collect(Collectors.groupingBy(HlScore::getModelId));
+        for (Long modelId : resultMap.keySet()) {
             Map<String, Object> map = new HashMap<>(16);
-            map.put("name", MODEL_NAMES[i]);
+            ScoreVO vo = new ScoreVO();
+            BizModel model = bizModelService.selectBizModelByModelId(modelId);
+            map.put("name", model.getModelName());
             List<String> times = new ArrayList<>();
             List<Float> scores = new ArrayList<>();
-            for (int j = 0; j < 24; j++) {
-                times.add(j + "");
-                Float score = Float.valueOf(new Random().nextInt(50) + 50);
-                scores.add(score);
-            }
+            List<HlScore> scoreList = resultMap.get(modelId);
+            scoreList = scoreList.stream().sorted(Comparator.comparing(HlScore::getHlDate)).collect(Collectors.toList());
+            scoreList.forEach(hs -> {
+                times.add(DateUtils.parseDateToStr("HH:mm", hs.getHlDate()));
+                scores.add(hs.getHlScore().floatValue());
+            });
             map.put("time", times);
             map.put("score", scores);
             result.add(map);
@@ -133,11 +155,11 @@ public class IndexController extends BaseController {
             map.put("objName", objName);
             map.put("metricsName", metricsName);
             String status = "1";
-            if (flag) {
+//            if (flag) {
                 //风险
                 num++;
                 status = "2";
-            }
+//            }
             map.put("status", status);
             list.add(map);
         }
@@ -151,15 +173,28 @@ public class IndexController extends BaseController {
     @GetMapping("/biz/access")
     public AjaxResult access() {
         List<Map<String, Object>> result = new ArrayList<>();
-        String[] names = {"市场出清/mysql", "市场出清/redis", "市场出清/user", "市场服务/auth", "市场结算/mysql"};
-        Random random = new Random();
-        for (int i = 0; i < names.length; i++) {
+
+        LocalDateTime endTime = LocalDateTime.now();
+        LocalDateTime beginTime = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
+        String start = beginTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+        String end = endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+        List<BizAccessVO> list = alarmRecordService.objAccess(null, start, end);
+        list.forEach(vo -> {
             Map<String, Object> map = new HashMap<>(16);
-            map.put("name", names[i]);
-            map.put("total", random.nextInt(500) + 500);
-            map.put("error", random.nextInt(20));
+            map.put("name", vo.getModelName());
+            map.put("total", vo.getAccess());
+            map.put("error", vo.getNum());
             result.add(map);
-        }
+        });
+//        String[] names = {"市场出清/mysql", "市场出清/redis", "市场出清/user", "市场服务/auth", "市场结算/mysql"};
+//        Random random = new Random();
+//        for (int i = 0; i < names.length; i++) {
+//            Map<String, Object> map = new HashMap<>(16);
+//            map.put("name", names[i]);
+//            map.put("total", random.nextInt(500) + 500);
+//            map.put("error", random.nextInt(20));
+//            result.add(map);
+//        }
         return success(result);
     }
 
@@ -167,16 +202,32 @@ public class IndexController extends BaseController {
     @GetMapping("/obj/alarm")
     public AjaxResult alarm() {
         Map<String, Object> result = new HashMap<>();
-        String[] names = {"市场服务node-1", "市场出清后台应用", "市场合规cluster1", "市场合规cluster2", "信息发布cluster1"};
-        result.put("curr", new Random().nextInt(50) + 1);
-        Random random = new Random();
-        List<Map<String, Object>> list = new ArrayList<>();
-        for (int i = 0; i < names.length; i++) {
+        LocalDateTime endTime = LocalDateTime.now();
+        LocalDateTime beginTime = endTime.minusDays(7);
+        String start = beginTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+        String end = endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+        List<BizTypeVO> list = alarmRecordService.listBizObj(null, start, end);
+        List<Map<String, Object>> alarmList = new ArrayList<>();
+
+        list.forEach(vo -> {
             Map<String, Object> map = new HashMap<>(16);
-            map.put("name", names[i]);
-            map.put("alarm", random.nextInt(500) + 500);
-            list.add(map);
-        }
+            map.put("name", vo.getName());
+            map.put("alarm", vo.getNum());
+            alarmList.add(map);
+        });
+
+        AlarmRecord q = new AlarmRecord();
+        q.setAlarmType("1");
+        List<AlarmRecord> al = alarmRecordService.selectAlarmRecordList(q);
+//        String[] names = {"市场服务node-1", "市场出清后台应用", "市场合规cluster1", "市场合规cluster2", "信息发布cluster1"};
+        result.put("curr", al.size());
+//        Random random = new Random();
+//        for (int i = 0; i < names.length; i++) {
+//            Map<String, Object> map = new HashMap<>(16);
+//            map.put("name", names[i]);
+//            map.put("alarm", random.nextInt(500) + 500);
+//            list.add(map);
+//        }
         result.put("data", list);
         return success(result);
     }
@@ -204,19 +255,35 @@ public class IndexController extends BaseController {
     @GetMapping("/ms/trend/{objMetricsId}")
     public AjaxResult msChat(@PathVariable("objMetricsId") Long objMetricsId) {
         List<Map<String, Object>> trendList = new ArrayList<>();
-        LocalDateTime ed = LocalDateTime.now();
-        LocalDateTime st = ed.minusDays(8);
-        Random r = new Random();
-        DecimalFormat df = new DecimalFormat("#0.00");
-        do {
+
+        LocalDateTime endTime = LocalDateTime.now();
+        LocalDateTime beginTime = endTime.minusDays(7);
+        Map<String, Object> params = new HashMap<>(16);
+        params.put("beginTime", beginTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+        params.put("endTime", endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+        BizObjMetricsData q = new BizObjMetricsData();
+        q.setObjMetricsId(objMetricsId);
+        q.setParams(params);
+        List<BizObjMetricsData> list = dataService.selectBizObjMetricsDataList(q);
+        list.forEach(data -> {
             Map<String, Object> map = new HashMap<>(16);
-            long time = st.toEpochSecond(ZoneOffset.ofHours(8)) * 1000;
-            map.put("time", time);
-            float f = r.nextFloat() * 100;
-            map.put("value", Float.parseFloat(df.format(f)));
-            st = st.plusDays(1);
+            map.put("time", data.getCreateTime());
+            map.put("value", data.getdValue().floatValue());
             trendList.add(map);
-        } while (!st.isAfter(ed));
+        });
+//        LocalDateTime ed = LocalDateTime.now();
+//        LocalDateTime st = ed.minusDays(8);
+//        Random r = new Random();
+//        DecimalFormat df = new DecimalFormat("#0.00");
+//        do {
+//            Map<String, Object> map = new HashMap<>(16);
+//            long time = st.toEpochSecond(ZoneOffset.ofHours(8)) * 1000;
+//            map.put("time", time);
+//            float f = r.nextFloat() * 100;
+//            map.put("value", Float.parseFloat(df.format(f)));
+//            st = st.plusDays(1);
+//            trendList.add(map);
+//        } while (!st.isAfter(ed));
         return AjaxResult.success(trendList);
     }
 

+ 28 - 0
jjt-biz/src/main/java/com/jjt/biz/service/IAlarmRecordService.java

@@ -2,6 +2,8 @@ package com.jjt.biz.service;
 
 import com.jjt.biz.domain.AlarmRecord;
 import com.jjt.biz.domain.BizObjMetrics;
+import com.jjt.biz.vo.BizAccessVO;
+import com.jjt.biz.vo.BizTypeVO;
 
 import java.util.Date;
 import java.util.List;
@@ -95,4 +97,30 @@ public interface IAlarmRecordService {
      * @return 结果
      */
     Map<Long, AlarmRecord> selectAlarmRecordListCurr(Long objId);
+
+    /**
+     * 业务类型统计
+     * @param start 开始时间
+     * @param end 结束时间
+     * @return 结果
+     */
+    List<BizTypeVO> listBizType(String start, String end);
+
+    /**
+     * 业务组件统计
+     * @param type 业务类型
+     * @param start 开始时间
+     * @param end 结束时间
+     * @return 结果
+     */
+    List<BizTypeVO> listBizObj(String type, String start, String end);
+
+    /**
+     * 组件压力排名
+     * @param modelId 模型ID
+     * @param start 开始时间
+     * @param end 结束时间
+     * @return 结果
+     */
+    List<BizAccessVO> objAccess(Long modelId, String start, String end);
 }

+ 134 - 4
jjt-biz/src/main/java/com/jjt/biz/service/impl/AlarmRecordServiceImpl.java

@@ -4,16 +4,17 @@ import com.jjt.biz.domain.AlarmRecord;
 import com.jjt.biz.domain.BizObjMetrics;
 import com.jjt.biz.mapper.AlarmRecordMapper;
 import com.jjt.biz.service.IAlarmRecordService;
+import com.jjt.biz.vo.BizAccessVO;
+import com.jjt.biz.vo.BizTypeVO;
 import com.jjt.common.utils.DateUtils;
 import com.jjt.common.utils.IntervalUtil;
 import com.jjt.common.utils.StringUtils;
+import com.jjt.system.service.ISysDictDataService;
+import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -27,6 +28,10 @@ import java.util.stream.Collectors;
 public class AlarmRecordServiceImpl implements IAlarmRecordService {
     @Resource
     private AlarmRecordMapper alarmRecordMapper;
+    @Resource
+    private JdbcTemplate jdbcTemplate;
+    @Resource
+    private ISysDictDataService sysDictDataService;
 
     /**
      * 查询告警记录
@@ -190,6 +195,131 @@ public class AlarmRecordServiceImpl implements IAlarmRecordService {
     }
 
     /**
+     * 业务类型统计
+     *
+     * @param start 开始时间
+     * @param end   结束时间
+     * @return 结果
+     */
+    @Override
+    public List<BizTypeVO> listBizType(String start, String end) {
+        List<BizTypeVO> list = new ArrayList();
+        String sql = "SELECT b.obj_type,COUNT(*) num FROM alarm_record a,biz_obj b WHERE a.obj_id=b.obj_id";
+        Vector<Object> v = new Vector<>();
+        if (start != null && end != null) {
+            sql += " AND a.alarm_time BETWEEN ? AND ?";
+            v.add(start);
+            v.add(end + " 23:59:59");
+        }
+        sql += " GROUP BY b.obj_type";
+        List<Map<String, Object>> results = jdbcTemplate.queryForList(sql, v.toArray());
+        results.forEach(map -> {
+            BizTypeVO ls = new BizTypeVO();
+
+            String obj_type = (String) map.get("obj_type");
+            ls.setId(obj_type);
+            ls.setName(sysDictDataService.selectDictLabel("biz_type", obj_type));
+            ls.setNum((Long) map.get("num"));
+            list.add(ls);
+        });
+
+        list.sort(Comparator.comparing(BizTypeVO::getNum));
+        return list;
+    }
+
+    /**
+     * 业务组件统计
+     *
+     * @param type  业务类型
+     * @param start 开始时间
+     * @param end   结束时间
+     * @return 结果
+     */
+    @Override
+    public List<BizTypeVO> listBizObj(String type, String start, String end) {
+        List<BizTypeVO> list = new ArrayList();
+        String sql = "SELECT b.obj_id,b.obj_name,COUNT(*) num FROM alarm_record a,biz_obj b WHERE a.obj_id=b.obj_id";
+        Vector<Object> v = new Vector<>();
+        if (StringUtils.isNotEmpty(type)) {
+            sql += " AND b.obj_type=?";
+            v.add(type);
+        }
+        if (start != null && end != null) {
+            sql += " AND a.alarm_time BETWEEN ? AND ?";
+            v.add(start);
+            v.add(end + " 23:59:59");
+        }
+        sql += " GROUP BY b.obj_id,b.obj_name";
+        List<Map<String, Object>> results = jdbcTemplate.queryForList(sql, v.toArray());
+        results.forEach(map -> {
+            BizTypeVO ls = new BizTypeVO();
+            String obj_name = (String) map.get("obj_name");
+            int obj_id = (int) map.get("obj_id");
+            ls.setId(obj_id + "");
+            ls.setName(obj_name);
+            ls.setNum((Long) map.get("num"));
+            list.add(ls);
+        });
+
+        list.sort(Comparator.comparing(BizTypeVO::getNum));
+        return list;
+    }
+
+    /**
+     * 组件压力排名
+     *
+     * @param modelId 模型ID
+     * @param start   开始时间
+     * @param end     结束时间
+     * @return 结果
+     */
+    @Override
+    public List<BizAccessVO> objAccess(Long modelId, String start, String end) {
+        List<BizAccessVO> list = new ArrayList<>();
+
+        String sql = "SELECT b.OBJ_ID,c.OBJ_NAME FROM biz_model_detail b,biz_obj c WHERE b.obj_id=c.obj_id AND c.OBJ_TYPE=1";
+        if (modelId != null) {
+            sql += " AND b.model_id=" + modelId;
+        }
+        sql += " GROUP BY b.OBJ_ID,c.obj_name";
+
+        List<Map<String, Object>> objList = jdbcTemplate.queryForList(sql);
+        objList.forEach(map -> {
+            BizAccessVO vo = new BizAccessVO();
+            Integer objId = (Integer) map.get("OBJ_ID");
+            String objName = (String) map.get("OBJ_NAME");
+            Vector<Object> v = new Vector<>();
+            v.add(objId);
+            String totSql = "SELECT IFNULL(SUM(D_VALUE),0) FROM biz_obj_metrics_data " +
+                    "WHERE obj_metrics_id IN(" +
+                    "SELECT obj_metrics_id FROM biz_obj_metrics" +
+                    " WHERE metrics_id =(SELECT metrics_id FROM metrics_def WHERE metrics_code='pp.tot')" +
+                    " AND obj_id =?)";
+            String errSql = "SELECT IFNULL(SUM(D_VALUE),0) FROM biz_obj_metrics_data " +
+                    "WHERE obj_metrics_id IN(" +
+                    "SELECT obj_metrics_id FROM biz_obj_metrics" +
+                    " WHERE metrics_id =(SELECT metrics_id FROM metrics_def WHERE metrics_code='pp.error')" +
+                    " AND obj_id =?)";
+
+            if (start != null && end != null) {
+                totSql += " AND CREATE_TIME BETWEEN ? AND ?";
+                errSql += " AND CREATE_TIME BETWEEN ? AND ?";
+                v.add(start);
+                v.add(end + " 23:59:59");
+            }
+
+            Long access = jdbcTemplate.queryForObject(totSql, Long.class, v.toArray());
+            Long num = jdbcTemplate.queryForObject(errSql, Long.class, v.toArray());
+
+            vo.setModelName(objName);
+            vo.setAccess(access);
+            vo.setNum(num);
+            list.add(vo);
+        });
+        return list;
+    }
+
+    /**
      * 查询是否正在告警?
      *
      * @param metricsId 指标对象