From 0289e2c5349f6b2e8cf41126be7ff31381b3f1d5 Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Mon, 19 Oct 2020 14:35:10 +0800
Subject: [PATCH] 多设备单因子数据及其平均值对比
---
src/main/java/com/moral/controller/ScreenController.java | 7 +-
src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java | 120 +++++++++++++++++++++++++++++++++-------
2 files changed, 102 insertions(+), 25 deletions(-)
diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java
index b86fa8d..ccdef87 100644
--- a/src/main/java/com/moral/controller/ScreenController.java
+++ b/src/main/java/com/moral/controller/ScreenController.java
@@ -2244,18 +2244,17 @@
return alarmData;
}
- @GetMapping("multiDeviceSensor")
+ @GetMapping("multiDeviceContrast")
@ApiOperation(value = "���������������������", notes = "���������������������")
@ApiImplicitParams(value = {
- @ApiImplicitParam(name = "monitorPoint", value = "���������id", required = true, paramType = "query", dataType = "String"),
@ApiImplicitParam(name = "macs", value = "������mac,���������������������������", required = true, paramType = "query", dataType = "String"),
@ApiImplicitParam(name = "sensorKey", value = "���������key", required = true, paramType = "query", dataType = "String"),
@ApiImplicitParam(name = "time", value = "������,������(���������2018-03-12)", required = true, paramType = "query", dataType = "String"),})
public ResultBean<List<Map<String, Object>>> multiDeviceSensor(HttpServletRequest request) throws Exception {
Map<String, Object> parameters = getParametersStartingWith(request, null);
ParameterUtils.getTimeType4Time(parameters);
- List<Map<String, Object>> multiDeviceSensorData = historyMinutelyService.getMultiDeviceSensorData(parameters);
- return new ResultBean<List<Map<String, Object>>>(multiDeviceSensorData);
+ List<Map<String, Object>> list = historyMinutelyService.getMultiDeviceSensorData(parameters);
+ return new ResultBean<List<Map<String, Object>>>(list);
}
@GetMapping("screenVersion")
diff --git a/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
index 79ef541..4b8c103 100644
--- a/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
@@ -4,6 +4,7 @@
import io.swagger.models.auth.In;
import java.math.BigDecimal;
+import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Instant;
@@ -893,38 +894,115 @@
@Override
public List<Map<String, Object>> getMultiDeviceSensorData(Map<String, Object> parameters) throws Exception {
String sensorKey = parameters.get("sensorKey").toString();
- System.out.println(parameters);
String[] macs = parameters.get("macs").toString().split(",");
List<String> sensorKeys = new ArrayList<>();
sensorKeys.add(sensorKey);
parameters.put("sensorKeys", sensorKeys);
parameters.put("sensors", sensorKeys);
- System.out.println(parameters);
- List<Map<String, Object>> list = new ArrayList<>(24);
- int max = 0;
+ String type = parameters.get("type").toString();
+ List<Map<String, Object>> list = new ArrayList<>();
+ for (int i = 0; i < 31; i++) {
+ list.add(null);
+ }
for (String mac : macs) {
parameters.put("mac", mac);
List<Map<String, Object>> data = getMonitorPointOrDeviceAvgData(parameters);
- if (data.size() >= max) {
- max = data.size();
+ List<Map<String, Object>> l = new ArrayList<>();
+ for (int i = 0; i < 31; i++) {
+ l.add(null);
}
- for (Map<String, Object> map : data) {
- List<String> values = new ArrayList<>();
- Map<String, Object> hashMap = new HashMap<>();
- String time = map.get("time").toString();
- hashMap.put("time",time);
- int length = time.length();
+ for (Map<String, Object> dataMap : data) {
+ String time = dataMap.get("time").toString();
Integer t = Integer.valueOf(time.substring(time.length() - 2));
- String value = map.get(sensorKey).toString();
- /* if (length > 10) {
-
- }*/
- values.add(value);
+ dataMap.put("time", t);
+ if ("day".equals(type)) {
+ l.set(t, dataMap);
+ } else {
+ l.set(t - 1, dataMap);
+ }
}
- System.out.println(data);
+ for (int i = 0; i < l.size(); i++) {
+ if (l.get(i) == null) {
+ Map<String, Object> m = new HashMap<>();
+ List<String> v = new ArrayList<>();
+ v.add("");
+ if ("day".equals(type)) {
+ m.put("time", i);
+ } else {
+ m.put("time", i + 1);
+ }
+ m.put("values", v);
+ l.set(i, m);
+ }
+ }
+ data = l;
+ for (Map<String, Object> map : data) {
+ Map<String, Object> hashMap = new HashMap<>();
+ if (map != null) {
+ int t = Integer.valueOf(map.get("time").toString());
+ hashMap.put("time", t);
+ String value;
+ if (map.get(sensorKey) == null) {
+ value = "";
+ } else {
+ value = map.get(sensorKey).toString();
+ }
+ List<String> values;
+
+ if ("day".equals(type)) {
+ t = t + 1;
+ }
+ if (list.get(t - 1) != null) {
+ values = (ArrayList<String>) list.get(t - 1).get("values");
+ } else {
+ values = new ArrayList<>();
+ }
+ values.add(value);
+ hashMap.put("values", values);
+ list.set(t - 1, hashMap);
+ }
+ }
}
- return null;
+ boolean flag = false;
+ Iterator<Map<String, Object>> iterator = list.iterator();
+ int digit = 0;
+ while (iterator.hasNext()) {
+ Map<String, Object> next = iterator.next();
+ ArrayList<String> values = (ArrayList<String>) next.get("values");
+ for (String value : values) {
+ if ("".equals(value)) {
+ flag = true;
+ } else {
+ digit = value.split("\\.")[1].length();
+ flag = false;
+ break;
+ }
+ }
+ if (flag) {
+ iterator.remove();
+ }
+ }
+ NumberFormat nf = NumberFormat.getNumberInstance();
+ nf.setMaximumFractionDigits(digit);
+ for (Map<String, Object> map : list) {
+ int time = Integer.valueOf(map.get("time").toString());
+ ArrayList<String> values = (ArrayList<String>) map.get("values");
+ if (values.size() > 1) {
+ int length = 0;
+ double sum = 0.0;
+ for (String value : values) {
+ if (!"".equals(value)) {
+ Double v = Double.valueOf(value);
+ length += 1;
+ sum += v;
+ }
+ }
+ Double avg = sum / length;
+ String format = nf.format(avg);
+ values.add(format);
+ map.put("values", values);
+ }
+ }
+ return list;
}
-
-
}
--
Gitblit v1.8.0