From f8bfd26b5ca75f439c74ecc1a830ccfbdcc11b63 Mon Sep 17 00:00:00 2001
From: cjl <276999030@qq.com>
Date: Mon, 24 Jul 2023 09:42:19 +0800
Subject: [PATCH] fix: 导出数据添加百分位
---
screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java | 24 ++++++++++++++++++++++--
1 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java
index e0df6e8..6ff2255 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java
@@ -414,8 +414,16 @@
double rsAvg = 0L;
String son = numCount+"_"+sensorMap.get(sensorsList.get(z));
if(listMap.containsKey(numCount+"_"+sensorMap.get(sensorsList.get(z)))){
- Double ListAvg = listMap.get(numCount+"_"+sensorMap.get(sensorsList.get(z))).stream().collect(Collectors.averagingDouble(Double::doubleValue));
- rsAvg = new BigDecimal(ListAvg).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue();
+ if(son.contains("������")){
+ rsAvg = percentile(listMap.get(numCount+"_"+sensorMap.get(sensorsList.get(z))),95d);
+
+ }else if(son.contains("������������")){
+ rsAvg = percentile(listMap.get(numCount+"_"+sensorMap.get(sensorsList.get(z))),90d);
+ }else {
+ Double ListAvg = listMap.get(numCount+"_"+sensorMap.get(sensorsList.get(z))).stream().collect(Collectors.averagingDouble(Double::doubleValue));
+ rsAvg = new BigDecimal(ListAvg).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue();
+ }
+
}
timeValueMap.put(sensorMap.get(sensorsList.get(z)),rsAvg);
}
@@ -526,6 +534,18 @@
monitorPointMapper.selectList(monitorPointQueryWrapper).forEach(it->map.put(it.getId(),it.getName()));
return map;
}
+ private Double percentile(List<Double> date,double num){
+ Collections.sort(date);
+ double position = (num / 100) * (date.size() - 1);
+ int index = (int) position;
+ // ���������������������������������
+ double fraction = position - index;
+
+ // ������������������
+ double percentileValue = date.get(index) + fraction * (date.get(index + 1) - date.get(index));
+ return new BigDecimal(percentileValue).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue();
+ }
+
}
--
Gitblit v1.8.0