From 7e5452d35bb30dad5bc9e37360047b5a43732dcd Mon Sep 17 00:00:00 2001 From: cjl <276999030@qq.com> Date: Thu, 27 Jul 2023 15:35:29 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/cjl' into dev --- 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