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