|
@@ -22,7 +22,12 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
|
+import java.util.concurrent.atomic.AtomicInteger;
|
|
|
|
|
|
/**
|
|
|
* 告警记录Controller
|
|
@@ -165,7 +170,7 @@ public class AlarmRecordController extends BaseController {
|
|
|
@GetMapping("/list/bizSort")
|
|
|
public AjaxResult listBizSort(@ApiParam(value = "分类") String bizType, @ApiParam(value = "开始时间yyyy-mm-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") Date start, @ApiParam(value = "结束时间yyyy-mm-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") Date end) {
|
|
|
List<BizSortVO> list = new ArrayList();
|
|
|
-// TODO 暂时使用模拟数据
|
|
|
+// 暂时使用模拟数据
|
|
|
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";
|
|
|
Vector<Object> v = new Vector<>();
|
|
|
if (StringUtils.isNotEmpty(bizType)) {
|
|
@@ -200,45 +205,56 @@ public class AlarmRecordController extends BaseController {
|
|
|
@GetMapping("/list/bizAccess")
|
|
|
public AjaxResult listBizAccess(@ApiParam(value = "开始时间yyyy-mm-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") Date start, @ApiParam(value = "结束时间yyyy-mm-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") Date end) {
|
|
|
List<BizAccessVO> list = new ArrayList<>();
|
|
|
-// //TODO 还是得先用模拟数据。
|
|
|
-// String sql = "SELECT a.model_id,a.model_name,ifnull(sum(c.ACCESS_TIMES),0) times FROM biz_model a,biz_model_detail b,biz_obj c" +
|
|
|
-// " WHERE a.model_id=b.model_id AND b.obj_id=c.obj_id GROUP BY a.model_id,a.model_name ORDER BY times desc";
|
|
|
-// 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");
|
|
|
-// BigDecimal times = (BigDecimal) map.get("times");
|
|
|
-// vo.setAccess(times.longValue());
|
|
|
-// 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);
|
|
|
-// }
|
|
|
-// Long num = jdbcTemplate.queryForObject(sql1, Long.class, v.toArray());
|
|
|
-// vo.setNum(num);
|
|
|
-// list.add(vo);
|
|
|
-// });
|
|
|
- String[] names = {"市场服务", "市场出清", "市场结算", "市场合规", "信息发布"};
|
|
|
- int[] as = new int[5];
|
|
|
- int[] nums = new int[5];
|
|
|
- for (int i = 0; i < as.length; i++) {
|
|
|
- as[i] = new Random().nextInt(1000) + 200;
|
|
|
- nums[i] = new Random().nextInt(500);
|
|
|
- }
|
|
|
- for (int i = 0; i < names.length; i++) {
|
|
|
+// //还是得先用模拟数据。
|
|
|
+ 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();
|
|
|
- vo.setModelId((long) (i + 1));
|
|
|
- vo.setModelName(names[i]);
|
|
|
- vo.setAccess((long) as[i]);
|
|
|
- vo.setNum((long) nums[i]);
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ Long access = jdbcTemplate.queryForObject(sql2, Long.class, v1.toArray());
|
|
|
+ vo.setAccess(access);
|
|
|
list.add(vo);
|
|
|
- }
|
|
|
+ });
|
|
|
+// String[] names = {"市场服务", "市场出清", "市场结算", "市场合规", "信息发布"};
|
|
|
+// int[] as = new int[5];
|
|
|
+// int[] nums = new int[5];
|
|
|
+// for (int i = 0; i < as.length; i++) {
|
|
|
+// as[i] = new Random().nextInt(1000) + 200;
|
|
|
+// nums[i] = new Random().nextInt(500);
|
|
|
+// }
|
|
|
+// for (int i = 0; i < names.length; i++) {
|
|
|
+// BizAccessVO vo = new BizAccessVO();
|
|
|
+// vo.setModelId((long) (i + 1));
|
|
|
+// vo.setModelName(names[i]);
|
|
|
+// vo.setAccess((long) as[i]);
|
|
|
+// vo.setNum((long) nums[i]);
|
|
|
+// list.add(vo);
|
|
|
+// }
|
|
|
|
|
|
list.sort(Comparator.comparing(BizAccessVO::getAccess).reversed());
|
|
|
return AjaxResult.success(list);
|
|
@@ -253,10 +269,10 @@ public class AlarmRecordController extends BaseController {
|
|
|
Vector<Object> v = new Vector<>();
|
|
|
if (modelId != null) {
|
|
|
sql += " AND b.MODEL_ID=? ";
|
|
|
- //TODO 因为是模拟数据,所以这里要做个映射,之后要取消掉
|
|
|
- int[] idRela = {4, 5, 15, 20, 23};
|
|
|
- v.add(idRela[modelId.intValue() - 1]);
|
|
|
-// v.add(modelId);
|
|
|
+// 因为是模拟数据,所以这里要做个映射,之后要取消掉
|
|
|
+// int[] idRela = {4, 5, 15, 20, 23};
|
|
|
+// v.add(idRela[modelId.intValue() - 1]);
|
|
|
+ v.add(modelId);
|
|
|
}
|
|
|
if (start != null && end != null) {
|
|
|
sql += " AND a.alarm_time BETWEEN ? AND ?";
|
|
@@ -278,56 +294,94 @@ public class AlarmRecordController extends BaseController {
|
|
|
@ApiOperation("组件压力排名")
|
|
|
@GetMapping("/list/objAccess")
|
|
|
public AjaxResult objAccess(@ApiParam(value = "对象ID") Long modelId, @ApiParam(value = "开始时间yyyy-mm-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") Date start, @ApiParam(value = "结束时间yyyy-mm-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") Date end) {
|
|
|
-// TODO 依然得用模拟数据
|
|
|
-// String sql = "SELECT b.OBJ_ID,c.OBJ_NAME,ifnull(sum(c.ACCESS_TIMES),0) TIMES 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 order by TIMES desc";
|
|
|
-// List<Map<String, Object>> mdList = jdbcTemplate.queryForList(sql, modelId);
|
|
|
+// 依然得用模拟数据
|
|
|
Map<String, Object> result = new HashMap<>(16);
|
|
|
List<BizAccessVO> list = new ArrayList<>();
|
|
|
- String[] names = {"服务", "出清", "结算", "合规", "发布"};
|
|
|
- String[] objs = {"USER", "mysql", "redis", "job", "auth", "biz"};
|
|
|
- int[] as = new int[6];
|
|
|
- int[] es = new int[6];
|
|
|
- for (int i = 0; i < as.length; i++) {
|
|
|
- as[i] = new Random().nextInt(300);
|
|
|
- es[i] = new Random().nextInt(80);
|
|
|
- }
|
|
|
- for (int i = 0; i < objs.length; i++) {
|
|
|
+
|
|
|
+ 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();
|
|
|
- String name = names[modelId.intValue() - 1];
|
|
|
- vo.setModelName(name + "/" + objs[i]);
|
|
|
- vo.setAccess((long) as[i]);
|
|
|
- vo.setNum((long) es[i]);
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+
|
|
|
+ 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.sort(Comparator.comparing(BizAccessVO::getAccess).reversed());
|
|
|
+ });
|
|
|
|
|
|
List<Map<String, Object>> dataList = new ArrayList<>();
|
|
|
- int[] max = new int[20];
|
|
|
- int[] avg = new int[20];
|
|
|
- int[] error = new int[20];
|
|
|
- int hour = 14;
|
|
|
- int mi = 0;
|
|
|
- for (int i = 0; i < 20; i++) {
|
|
|
- mi = mi + i;
|
|
|
- if (mi >= 60) {
|
|
|
- mi = 0;
|
|
|
- hour++;
|
|
|
- }
|
|
|
- String time = hour + ":" + (mi < 10 ? "0" + mi : mi + "");
|
|
|
- Map<String, Object> map = new HashMap<>();
|
|
|
- map.put("time", time);
|
|
|
- max[i] = new Random().nextInt(300);
|
|
|
- avg[i] = new Random().nextInt(100);
|
|
|
- error[i] = new Random().nextInt(15);
|
|
|
- map.put("max", max[i]);
|
|
|
- map.put("avg", avg[i]);
|
|
|
- map.put("error", error[i]);
|
|
|
-
|
|
|
- dataList.add(map);
|
|
|
+ //获取趋势
|
|
|
+ Vector<Object> v = new Vector<>();
|
|
|
+ String totSql = "SELECT CREATE_TIME,SUM(D_VALUE) MAX_V,AVG(D_VALUE) AVG_V 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=?))";
|
|
|
+
|
|
|
+ String errSql = "SELECT CREATE_TIME,SUM(D_VALUE) D_VALUE 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 IN(SELECT obj_id FROM biz_model_detail WHERE model_id=?))";
|
|
|
+ v.add(modelId);
|
|
|
+ if (start != null && end != null) {
|
|
|
+ totSql += " AND CREATE_TIME BETWEEN ? AND ?";
|
|
|
+ errSql += " AND CREATE_TIME BETWEEN ? AND ?";
|
|
|
+ v.add(start);
|
|
|
+ v.add(end);
|
|
|
}
|
|
|
|
|
|
+ totSql += " group by create_time";
|
|
|
+ errSql += " group by create_time";
|
|
|
+
|
|
|
+ List<Map<String, Object>> totList = jdbcTemplate.queryForList(totSql, v.toArray());
|
|
|
+ List<Map<String, Object>> errList = jdbcTemplate.queryForList(errSql, v.toArray());
|
|
|
+ AtomicInteger index = new AtomicInteger();
|
|
|
+ totList.forEach(map -> {
|
|
|
+ Map<String, Object> errMap = errList.get(index.get());
|
|
|
+ Map<String, Object> data = new HashMap<>(16);
|
|
|
+ LocalDateTime time = (LocalDateTime) map.get("CREATE_TIME");
|
|
|
+ String formatTime = time.format(DateTimeFormatter.ofPattern("MM-dd HH:mm"));
|
|
|
+ BigDecimal error = (BigDecimal) errMap.get("D_VALUE");
|
|
|
+ BigDecimal max = (BigDecimal) map.get("MAX_V");
|
|
|
+ BigDecimal avg = (BigDecimal) map.get("AVG_V");
|
|
|
+ data.put("time", formatTime);
|
|
|
+ data.put("max", max);
|
|
|
+ data.put("avg", avg.setScale(2, RoundingMode.HALF_UP));
|
|
|
+ data.put("error", error);
|
|
|
+ dataList.add(data);
|
|
|
+ index.getAndIncrement();
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ list.sort(Comparator.comparing(BizAccessVO::getAccess).reversed());
|
|
|
result.put("objs", list);
|
|
|
result.put("datas", dataList);
|
|
|
return AjaxResult.success(result);
|