diff --git a/zc-business/src/main/java/com/zc/business/controller/StatusController.java b/zc-business/src/main/java/com/zc/business/controller/StatusController.java index 957be29a..c86f20f8 100644 --- a/zc-business/src/main/java/com/zc/business/controller/StatusController.java +++ b/zc-business/src/main/java/com/zc/business/controller/StatusController.java @@ -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 listStatus = statusService.deviceStatusListById(status); // Calculate average successRate by day - Map averageSuccessRateByDay = listStatus.stream() - .collect(Collectors.groupingBy(s -> s.getTime().getDayOfMonth(), + Map 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 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)); } //按类型划分设备