Explorar el Código

改了一堆杂七杂八的

wukai hace 7 meses
padre
commit
0db0c48fc7

+ 88 - 32
jjt-biz/src/main/java/com/jjt/biz/controller/AlarmRecordController.java

@@ -1,7 +1,9 @@
 package com.jjt.biz.controller;
 
 import com.jjt.biz.domain.AlarmRecord;
+import com.jjt.biz.domain.BizModel;
 import com.jjt.biz.service.IAlarmRecordService;
+import com.jjt.biz.service.IBizModelService;
 import com.jjt.biz.vo.BizAccessVO;
 import com.jjt.biz.vo.BizSortVO;
 import com.jjt.biz.vo.BizTypeVO;
@@ -27,6 +29,7 @@ import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
 
 /**
  * 告警记录Controller
@@ -44,6 +47,8 @@ public class AlarmRecordController extends BaseController {
     private JdbcTemplate jdbcTemplate;
     @Resource
     private ISysDictDataService sysDictDataService;
+    @Resource
+    private IBizModelService bizModelService;
 
     /**
      * 查询告警记录列表
@@ -78,7 +83,7 @@ public class AlarmRecordController extends BaseController {
     @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 = alarmRecordService.listBizObj(type,start, end);
+        List<BizTypeVO> list = alarmRecordService.listBizObj(type, start, end);
         return AjaxResult.success(list);
     }
 
@@ -151,41 +156,92 @@ public class AlarmRecordController extends BaseController {
     @GetMapping("/list/bizAccess")
     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";
-        List<Map<String, Object>> mdList = jdbcTemplate.queryForList(sql);
-        mdList.forEach(map -> {
+        String sql = "SELECT bmdetail.model_id,subq.metrics_code,IFNULL(SUM(bmd.D_VALUE), 0) AS total_value " +
+                "FROM biz_obj_metrics_data bmd " +
+                "JOIN (" +
+                "    SELECT bom.obj_metrics_id, bom.obj_id,md.metrics_code" +
+                "    FROM biz_obj_metrics bom" +
+                "    JOIN metrics_def md ON bom.metrics_id = md.metrics_id" +
+                "    WHERE md.metrics_code = 'pp.error' OR md.metrics_code='pp.tot' OR md.metrics_code='D_10163'" +
+                ") subq ON bmd.obj_metrics_id = subq.obj_metrics_id" +
+                " JOIN biz_model_detail bmdetail ON subq.obj_id = bmdetail.obj_id" +
+                " WHERE bmd.CREATE_TIME BETWEEN ? AND ?" +
+                " GROUP BY bmdetail.model_id,subq.metrics_code";
+        List<Map<String, Object>> acList = jdbcTemplate.queryForList(sql, start, end + " 23:59:59");
+        Map<Integer, List<Map<String, Object>>> resultMap = acList.stream().collect(Collectors.groupingBy(mp -> (Integer) mp.get("model_id")));
+
+        List<BizModel> modelList = bizModelService.selectBizModelList(new BizModel());
+        modelList.forEach(model -> {
             BizAccessVO vo = new BizAccessVO();
-            Integer modelId = (Integer) map.get("model_id");
-            String modelName = (String) map.get("model_name");
-            vo.setModelId(Long.valueOf(modelId));
-            vo.setModelName(modelName);
-            Vector<Object> v = new Vector<>();
-            String sql1 = "SELECT COUNT(*) FROM alarm_record WHERE obj_id IN(SELECT obj_id FROM biz_model_detail WHERE model_id=?)";
-            v.add(modelId);
-            if (start != null && end != null) {
-                sql1 += " AND alarm_time BETWEEN ? AND ?";
-                v.add(start);
-                v.add(end + " 23:59:59");
+            Map<String, Object> map = new HashMap<>(16);
+            vo.setModelId(model.getModelId());
+            vo.setModelName(model.getModelName());
+            map.put("name", model.getModelName());
+            String sql1 = "SELECT COUNT(*) FROM alarm_record WHERE obj_id IN(SELECT obj_id FROM biz_model_detail WHERE model_id=?) AND alarm_time BETWEEN ? AND ?";
+            Long num = jdbcTemplate.queryForObject(sql1, Long.class, model.getModelId(), start, end + " 23:59:59");
+            vo.setN1(num);
+
+            sql1 = "SELECT COUNT(*) FROM biz_obj WHERE obj_type=1 AND obj_id IN(SELECT obj_id FROM biz_model_detail where model_id=?)";
+            num = jdbcTemplate.queryForObject(sql1, Long.class, model.getModelId());
+            vo.setN2(num);
+            List<Map<String, Object>> vList = resultMap.get(model.getModelId().intValue());
+            for (Map<String, Object> objectMap : vList) {
+                String code = (String) objectMap.get("metrics_code");
+                BigDecimal value = (BigDecimal) objectMap.get("total_value");
+                if ("pp.error".equals(code)) {
+                    vo.setNum(value.longValue());
+                }
+                if ("pp.tot".equals(code)) {
+                    vo.setAccess(value.longValue());
+                }
+                if ("D_10163".equals(code)) {
+                    vo.setN3(value.longValue());
+                }
             }
-            Long num = jdbcTemplate.queryForObject(sql1, Long.class, v.toArray());
-            vo.setNum(num);
-            Vector<Object> v1 = new Vector<>();
-            String sql2 = "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 IN(SELECT obj_id FROM biz_model_detail WHERE model_id=?))";
-            v1.add(modelId);
-            if (start != null && end != null) {
-                sql2 += " AND CREATE_TIME BETWEEN ? AND ?";
-                v1.add(start);
-                v1.add(end + " 23:59:59");
+            if (vo.getN3() == null) {
+                vo.setN3(0L);
             }
-            Long access = jdbcTemplate.queryForObject(sql2, Long.class, v1.toArray());
-            vo.setAccess(access);
             list.add(vo);
         });
+
+
+//        //还是得先用模拟数据。
+//        String sql = "SELECT model_id,model_name FROM biz_model";
+//        List<Map<String, Object>> mdList = jdbcTemplate.queryForList(sql);
+//        mdList.forEach(map -> {
+//            BizAccessVO vo = new BizAccessVO();
+//            Integer modelId = (Integer) map.get("model_id");
+//            String modelName = (String) map.get("model_name");
+//            vo.setModelId(Long.valueOf(modelId));
+//            vo.setModelName(modelName);
+//            Vector<Object> v = new Vector<>();
+//            String sql1 = "SELECT COUNT(*) FROM alarm_record WHERE obj_id IN(SELECT obj_id FROM biz_model_detail WHERE model_id=?)";
+//            v.add(modelId);
+//            if (start != null && end != null) {
+//                sql1 += " AND alarm_time BETWEEN ? AND ?";
+//                v.add(start);
+//                v.add(end + " 23:59:59");
+//            }
+//            Long num = jdbcTemplate.queryForObject(sql1, Long.class, v.toArray());
+//            vo.setNum(num);
+//            Vector<Object> v1 = new Vector<>();
+//            String sql2 = "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 IN(SELECT obj_id FROM biz_model_detail WHERE model_id=?))";
+//            v1.add(modelId);
+//            if (start != null && end != null) {
+//                sql2 += " AND CREATE_TIME BETWEEN ? AND ?";
+//                v1.add(start);
+//                v1.add(end + " 23:59:59");
+//            }
+//            Long access = jdbcTemplate.queryForObject(sql2, Long.class, v1.toArray());
+//            vo.setAccess(access);
+//            vo.setN1(1L);
+//
+//            list.add(vo);
+//        });
 //        String[] names = {"市场服务", "市场出清", "市场结算", "市场合规", "信息发布"};
 //        int[] as = new int[5];
 //        int[] nums = new int[5];
@@ -242,7 +298,7 @@ public class AlarmRecordController extends BaseController {
     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 = alarmRecordService.objAccess(modelId,start,end);
+        List<BizAccessVO> list = alarmRecordService.objAccess(modelId, start, end);
 
         List<Map<String, Object>> dataList = new ArrayList<>();
         //获取趋势

+ 39 - 22
jjt-biz/src/main/java/com/jjt/biz/controller/IndexController.java

@@ -3,7 +3,6 @@ package com.jjt.biz.controller;
 import com.jjt.biz.domain.*;
 import com.jjt.biz.service.*;
 import com.jjt.biz.util.DataUtil;
-import com.jjt.biz.vo.BizAccessVO;
 import com.jjt.biz.vo.BizTypeVO;
 import com.jjt.biz.vo.HlScoreVO;
 import com.jjt.common.core.controller.BaseController;
@@ -16,7 +15,10 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
@@ -260,28 +262,42 @@ public class IndexController extends BaseController {
     @GetMapping("/biz/access")
     public AjaxResult access() {
         List<Map<String, Object>> result = new ArrayList<>();
-
         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 -> {
+        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        String start = df.format(LocalDateTime.of(beginTime.toLocalDate(), LocalTime.MIN));
+        String end = df.format(LocalDateTime.of(endTime.toLocalDate(), LocalTime.MAX));
+        String sql = "SELECT bmdetail.model_id,subq.metrics_code,IFNULL(SUM(bmd.D_VALUE), 0) AS total_value " +
+                "FROM biz_obj_metrics_data bmd " +
+                "JOIN (" +
+                "    SELECT bom.obj_metrics_id, bom.obj_id,md.metrics_code" +
+                "    FROM biz_obj_metrics bom" +
+                "    JOIN metrics_def md ON bom.metrics_id = md.metrics_id" +
+                "    WHERE md.metrics_code = 'pp.error' OR md.metrics_code='pp.tot'" +
+                ") subq ON bmd.obj_metrics_id = subq.obj_metrics_id" +
+                " JOIN biz_model_detail bmdetail ON subq.obj_id = bmdetail.obj_id" +
+                " WHERE bmd.CREATE_TIME BETWEEN ? AND ?" +
+                " GROUP BY bmdetail.model_id,subq.metrics_code";
+        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql, start, end);
+        Map<Integer, List<Map<String, Object>>> resultMap = list.stream().collect(Collectors.groupingBy(mp -> (Integer) mp.get("model_id")));
+
+        List<BizModel> modelList = bizModelService.selectBizModelList(new BizModel());
+        modelList.forEach(model -> {
             Map<String, Object> map = new HashMap<>(16);
-            map.put("name", vo.getModelName());
-            map.put("total", vo.getAccess());
-            map.put("error", vo.getNum());
+            map.put("name", model.getModelName());
+            List<Map<String, Object>> vList = resultMap.get(model.getModelId().intValue());
+            for (Map<String, Object> objectMap : vList) {
+                String code = (String) objectMap.get("metrics_code");
+                BigDecimal value = (BigDecimal) objectMap.get("total_value");
+                if ("pp.error".equals(code)) {
+                    map.put("error", value);
+                }
+                if ("pp.tot".equals(code)) {
+                    map.put("total", value);
+                }
+            }
             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);
     }
 
@@ -291,8 +307,9 @@ public class IndexController extends BaseController {
         Map<String, Object> result = new HashMap<>();
         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"));
+        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        String start = df.format(LocalDateTime.of(beginTime.toLocalDate(), LocalTime.MIN));
+        String end = df.format(LocalDateTime.of(endTime.toLocalDate(), LocalTime.MAX));
         List<BizTypeVO> list = alarmRecordService.listBizObj(null, start, end);
         list = list.stream().sorted(Comparator.comparing(BizTypeVO::getNum).reversed()).collect(Collectors.toList());
         AlarmRecord q = new AlarmRecord();
@@ -387,7 +404,7 @@ public class IndexController extends BaseController {
     }
 
     @ApiOperation("指标配置--删除指标")
-    @GetMapping("/del/ms/config/del/{imIds}")
+    @GetMapping("/ms/config/del/{imIds}")
     public AjaxResult configDel(@ApiParam(value = "指标imId", required = true) @PathVariable Long[] imIds) {
         return AjaxResult.success(imService.deleteIndexMetricsByImIds(imIds));
     }

+ 6 - 0
jjt-biz/src/main/java/com/jjt/biz/vo/BizAccessVO.java

@@ -27,6 +27,12 @@ public class BizAccessVO {
     private Long access;
     @ApiModelProperty("告警数量")
     private Long num;
+    @ApiModelProperty("n1")
+    private Long n1;
+    @ApiModelProperty("n2")
+    private Long n2;
+    @ApiModelProperty("n3")
+    private Long n3;
 
     public BizAccessVO(boolean flag) {
         if (flag) {

+ 2 - 1
jjt-biz/src/main/java/com/jjt/push/service/impl/PushConfigServiceImpl.java

@@ -14,6 +14,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.math.RoundingMode;
 import java.util.List;
 import java.util.Map;
 
@@ -151,7 +152,7 @@ public class PushConfigServiceImpl implements IPushConfigService {
             default:
                 phones = "";
         }
-        content += "当前状态:" + record.getAlarmValue() + "\n";
+        content += "当前状态:" + record.getAlarmValue().setScale(2, RoundingMode.HALF_UP) + "\n";
         String open = "Y";
         if (open.equals(pc.getFlagSms())) {
             //短信开关打开