Browse Source

优化单设备在线路接口

develop
zhaoxianglong 10 months ago
parent
commit
a0cb61db6c
  1. 24
      zc-business/src/main/java/com/zc/business/controller/StatusController.java

24
zc-business/src/main/java/com/zc/business/controller/StatusController.java

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

Loading…
Cancel
Save