|
|
@ -1,4 +1,5 @@ |
|
|
|
package com.zc.business.controller; |
|
|
|
|
|
|
|
import com.github.pagehelper.util.StringUtil; |
|
|
|
import com.ruoyi.common.annotation.Log; |
|
|
|
import com.ruoyi.common.core.controller.BaseController; |
|
|
@ -21,7 +22,10 @@ import org.springframework.web.bind.annotation.*; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import javax.servlet.http.HttpServletResponse; |
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.math.RoundingMode; |
|
|
|
import java.time.LocalDateTime; |
|
|
|
import java.time.format.DateTimeFormatter; |
|
|
|
import java.time.temporal.ChronoUnit; |
|
|
|
import java.util.*; |
|
|
|
import java.util.stream.Collectors; |
|
|
@ -130,19 +134,27 @@ public class StatusController extends BaseController { |
|
|
|
List<Status> listStatus = statusService.deviceStatusListById(status); |
|
|
|
|
|
|
|
// Calculate average successRate by day
|
|
|
|
Map<Integer, Double> averageSuccessRateByDay = listStatus.stream() |
|
|
|
.collect(Collectors.groupingBy(s -> s.getTime().getDayOfMonth(), |
|
|
|
Map<String, Double> averageSuccessRateByDay = listStatus.stream() |
|
|
|
.collect(Collectors.groupingBy(s -> { |
|
|
|
// 使用 DateTimeFormatter 格式化日期
|
|
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); |
|
|
|
String formattedDate = s.getTime().format(formatter); |
|
|
|
return formattedDate; |
|
|
|
}, |
|
|
|
Collectors.averagingDouble(s -> Double.parseDouble(s.getSuccessRate().replace("%", ""))))); |
|
|
|
|
|
|
|
if (averageSuccessRateByDay.isEmpty()) { |
|
|
|
return AjaxResult.success("暂无数据"); |
|
|
|
} |
|
|
|
|
|
|
|
// Round average successRate to two decimal places
|
|
|
|
Map<Integer, Double> roundedAverageSuccessRateByDay = averageSuccessRateByDay.entrySet().stream() |
|
|
|
.collect(Collectors.toMap(Map.Entry::getKey, entry -> Math.round(entry.getValue() * 100.0) / 100.0)); |
|
|
|
averageSuccessRateByDay.keySet().forEach(item -> { |
|
|
|
|
|
|
|
BigDecimal bigDecimal = new BigDecimal(averageSuccessRateByDay.get(item)); |
|
|
|
averageSuccessRateByDay.put(item, bigDecimal.setScale(2, RoundingMode.HALF_UP).doubleValue()); |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
return AjaxResult.success(roundedAverageSuccessRateByDay); |
|
|
|
return AjaxResult.success(new TreeMap<>(averageSuccessRateByDay)); |
|
|
|
} |
|
|
|
|
|
|
|
//按类型划分设备
|
|
|
|