From 7a734de6f72aa43cccddf74083ac134e41d1afff Mon Sep 17 00:00:00 2001
From: cjl <276999030@qq.com>
Date: Mon, 24 Jul 2023 13:35:37 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/cjl' into dev
---
screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java | 22 ++++++++++++++++++++--
1 files changed, 20 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..8a068b7 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,14 @@
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))),90d);
+ }else if(son.contains("������������")){
+ rsAvg = percentile(listMap.get(numCount+"_"+sensorMap.get(sensorsList.get(z))),95d);
+ }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 +532,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