From 6fe3e9841f25481cf78bd1f102886d4ce35e9e17 Mon Sep 17 00:00:00 2001
From: cjl <276999030@qq.com>
Date: Fri, 28 Jul 2023 13:38:01 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/qa' into qa
---
screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java | 51 +++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 47 insertions(+), 4 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 27bd715..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
@@ -266,7 +266,7 @@
if(map.containsKey(k)){
Object o = map.get(k).get(sensor);
timeValueMap.put(c,Objects.nonNull(o)?Double.valueOf(o.toString()):0);
- if(Objects.nonNull(o)){
+ if(Objects.nonNull(o)&& (!Double.valueOf(o.toString()).equals(0d))){
doubleArrayList.add(Double.valueOf(o.toString()));
}
}else {
@@ -378,10 +378,15 @@
for (Device device:devices) {
Date ks = DateUtils.getDate(startTime,"yyyy-MM-dd");
Date js = DateUtils.getDateOfDay(DateUtils.getDate(endTime,"yyyy-MM-dd"),1);
+ String nameSite = pointMap.get(device.getMonitorPointId());
+ String name = device.getName();
+ Map<String, Object> timeValueMap = new LinkedHashMap<>();
+ Map<String,ArrayList<Double>> listMap = new HashMap<>();
+ int numCount = 0;
while (DateUtils.isTimeBefor(js,ks)){
- Map<String, Object> timeValueMap = new LinkedHashMap<>();//key���time���value������������json
- timeValueMap.put("������������",pointMap.get(device.getMonitorPointId()));
- timeValueMap.put("name",device.getName());
+ timeValueMap = new LinkedHashMap<>();//key���time���value������������json
+ timeValueMap.put("������������",nameSite);
+ timeValueMap.put("name",name);
String c = DateUtils.dateToDateString(ks,"yyyy-MM-dd");
timeValueMap.put("������",c);
for (String sensor:sensorsList) {
@@ -390,12 +395,38 @@
if(map.containsKey(k)){
Object o = map.get(k).get(sensor);
num = Objects.nonNull(o)?Double.valueOf(o.toString()):0d;
+ if(Objects.nonNull(num)&& !num.equals(0d)){
+ ArrayList<Double> doubleArrayList = Objects.isNull(listMap.get(numCount+"_"+sensorMap.get(sensor)))?new ArrayList<>():listMap.get(numCount+"_"+sensorMap.get(sensor));
+ doubleArrayList.add(num);
+ listMap.put(numCount+"_"+sensorMap.get(sensor),doubleArrayList);
+ }
}
timeValueMap.put(sensorMap.get(sensor),num);
}
resultList.add(timeValueMap);
ks = DateUtils.getDateOfDay(ks,1);
}
+ timeValueMap = new LinkedHashMap<>();
+ timeValueMap.put("������������",nameSite);
+ timeValueMap.put("name",name);
+ timeValueMap.put("������","���������");
+ for(int z = 0 ;z< sensorsList.size();z++){
+ double rsAvg = 0L;
+ String son = numCount+"_"+sensorMap.get(sensorsList.get(z));
+ if(listMap.containsKey(numCount+"_"+sensorMap.get(sensorsList.get(z)))){
+ 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);
+ }
+ resultList.add(timeValueMap);
+ numCount++;
}
}else {
@@ -501,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