public static LinkedHashMap<String, Long> getProcessRate(List<ProcessTime> models) { Collections.sort( models, new Comparator() { @Override public int compare(Object o1, Object o2) { ProcessTime p1 = (ProcessTime) o1; ProcessTime p2 = (ProcessTime) o2; return (int) (p1.getStartTime().getTime() - p2.getStartTime().getTime()); } }); LinkedHashMap<String, Long> data = new LinkedHashMap<>(); if (models.size() < 1) { return data; } ProcessTime first = models.get(0); ProcessTime latest = models.get(models.size() - 1); log.debug("首次请求时间:" + DateTypeConverter.toDefaultDateTime(first.getStartTime())); log.debug("最后请求时间:" + DateTypeConverter.toDefaultDateTime(latest.getEndTime())); long totalTime = latest.getEndTime().getTime() - first.getStartTime().getTime(); log.debug( "系统总时间:" + latest.getEndTime().getTime() + "-" + first.getStartTime().getTime() + "=" + totalTime); long processTime = 0; for (ProcessTime item : models) { log.debug(" 增加请求处理时间:" + item.getProcessTime()); processTime += item.getProcessTime(); } log.debug("处理请求时间:" + processTime); long waitTime = totalTime - processTime; log.debug("系统空闲时间:" + waitTime); data.put("处理请求时间", processTime); data.put("系统空闲时间", -waitTime); return data; }
private static LinkedHashMap<String, Long> getSequenceTimeData( List<ProcessTime> models, String format) { LinkedHashMap<String, ProcessTime> temp = new LinkedHashMap<>(); // 将日志数据转换为统计报表数据 for (ProcessTime item : models) { String key = new SimpleDateFormat(format).format(item.getStartTime()); ProcessTime value = temp.get(key); if (value == null) { value = item; } else { value = value.getProcessTime() > item.getProcessTime() ? value : item; } temp.put(key, value); } LinkedHashMap<String, Long> LinkedHashMap = new LinkedHashMap<>(); for (String key : temp.keySet()) { LinkedHashMap.put(key + ", " + temp.get(key).getResource(), temp.get(key).getProcessTime()); } return LinkedHashMap; }