From 5b0347a811a6c948defb5320e71c43173280dfc2 Mon Sep 17 00:00:00 2001 From: xufenglei <xufenglei> Date: Tue, 06 Feb 2018 10:30:31 +0800 Subject: [PATCH] 更新 --- src/main/resources/system/sysConfig.properties | 2 src/main/java/com/moral/service/HistoryMinutelyService.java | 2 + src/main/java/com/moral/mapper/HistoryMinutelyMapper.java | 2 src/main/resources/mapper/HistoryMinutelyMapper.xml | 9 +--- src/main/java/com/moral/controller/ReportController.java | 4 +- src/main/java/com/moral/controller/ScreenController.java | 2 src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java | 63 ++++++++++++++++++++++++++++--- 7 files changed, 65 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/moral/controller/ReportController.java b/src/main/java/com/moral/controller/ReportController.java index 3da3cf3..72bfd3a 100644 --- a/src/main/java/com/moral/controller/ReportController.java +++ b/src/main/java/com/moral/controller/ReportController.java @@ -40,11 +40,10 @@ Map<String, Object> parameters = getParametersStartingWith(request, null); List<Map<String, Object>> list = historyMinutelyService.getMonitorPointOrDeviceAvgData(parameters); String[][] exportColumn = new String[2][]; - exportColumn[0] = new String[] { "������", "20", "time" }; if (parameters.containsKey("sensors")) { Set<String> sensors = (Set<String>) parameters.get("sensors"); exportColumn = new String[sensors.size() + 1][]; - exportColumn[0] = new String[] { "������", "20", "time" }; + // exportColumn[0] = new String[] { "������", "20", "time" }; int index = 1; for (String sensorKey : sensors) { String[] split = sensorKey.split("-"); @@ -56,6 +55,7 @@ } else { exportColumn[1] = new String[] { (String) parameters.get("sensorName"), "10", (String) parameters.get("sensorKey") }; } + exportColumn[0] = new String[] { "������", "20", "time" }; OutputStream outputStream = exportData(response, "Excel������", list, exportColumn); outputStream.flush(); diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java index 86f52d9..0673c42 100644 --- a/src/main/java/com/moral/controller/ScreenController.java +++ b/src/main/java/com/moral/controller/ScreenController.java @@ -213,7 +213,7 @@ @GetMapping("month-sensor-average") public Map<String, Object> getMonthAverageBySensor(HttpServletRequest request) { Map<String, Object> parameters = getParametersStartingWith(request, null); - return historyService.getMonthAverageBySensor(parameters); + return historyMinutelyService.getMonthAverageBySensor(parameters); } @GetMapping("check-activate") diff --git a/src/main/java/com/moral/mapper/HistoryMinutelyMapper.java b/src/main/java/com/moral/mapper/HistoryMinutelyMapper.java index 049989c..cfc8941 100644 --- a/src/main/java/com/moral/mapper/HistoryMinutelyMapper.java +++ b/src/main/java/com/moral/mapper/HistoryMinutelyMapper.java @@ -5,7 +5,7 @@ public interface HistoryMinutelyMapper{ - Map<String, Double> getDayAQIByDevice(Map<String, Object> parameters); + Map<String, Double> getSersionAvgByDevice(Map<String, Object> parameters); List<Map<String, Object>> getMonitorPointOrDeviceAvgData(Map<String, Object> parameters); diff --git a/src/main/java/com/moral/service/HistoryMinutelyService.java b/src/main/java/com/moral/service/HistoryMinutelyService.java index bfb8590..7a1ca38 100644 --- a/src/main/java/com/moral/service/HistoryMinutelyService.java +++ b/src/main/java/com/moral/service/HistoryMinutelyService.java @@ -11,5 +11,7 @@ List<Map<String, Object>> getMonitorPointOrDeviceAvgData(Map<String, Object> parameters) throws Exception; + Map<String, Object> getMonthAverageBySensor(Map<String, Object> parameters); + } diff --git a/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java index ea32d1a..d2b440c 100644 --- a/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java +++ b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java @@ -1,6 +1,8 @@ package com.moral.service.impl; +import static com.moral.common.bean.Constants.NULL_VALUE; import static org.apache.commons.lang3.time.DateUtils.addDays; +import static org.apache.commons.lang3.time.DateUtils.addMonths; import static org.apache.commons.lang3.time.DateUtils.truncate; import static org.springframework.util.ObjectUtils.isEmpty; @@ -28,9 +30,13 @@ import javax.annotation.Resource; import org.apache.commons.lang3.time.DateUtils; +import org.springframework.data.mongodb.core.aggregation.Aggregation; +import org.springframework.data.mongodb.core.aggregation.AggregationResults; +import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; +import com.mongodb.BasicDBObject; import com.moral.common.util.CalculateUtils; import com.moral.common.util.ResourceUtil; import com.moral.common.util.ValidateUtil; @@ -62,7 +68,16 @@ parameters.put("start", truncate(addDays(date, -1), Calendar.DATE)); // ������00:00:00 parameters.put("end", truncate(date, Calendar.DATE)); - Map<String, Double> average = historyMinutelyMapper.getDayAQIByDevice(parameters); + String[] macKeys = { "e1", "e2", "e10", "e11", "e15", "e16" }; + String sensorKeyColumn = ""; + for (int i = 0; i < macKeys.length; i++) { + sensorKeyColumn += "AVG(json -> '$." + macKeys[i] + "[0]') " + macKeys[i]; + if (i != macKeys.length -1) { + sensorKeyColumn += " ,"; + } + } + parameters.put("sensorKeyColumn", sensorKeyColumn); + Map<String, Double> average = historyMinutelyMapper.getSersionAvgByDevice(parameters); return getAQIByDataMap(average); } @@ -258,6 +273,8 @@ parameters.put("sensorKeyColumn", sensorKeyColumn); } + sensorKeys.clear(); + // ������������������ if (!parameters.containsKey("mac")) { resul = new ArrayList<Map<String,Object>>(); Integer monitorPointId = Integer.valueOf((String) parameters.get("monitorPoint")); @@ -327,8 +344,9 @@ } resul.add(resultMap); } - + // ������ ��������� } else { + // ��������������� if (!parameters.containsKey("sensorKeyColumn")) { String mac = (String) parameters.get("mac"); Device device = new Device(); @@ -347,17 +365,48 @@ private String getSensorKeyColumnBySensors(List<Map<String, Object>> sensors) { String sensorKeyColumn = ""; + for (int i = 0; i < sensors.size(); i++) { String sensorKey = (String) sensors.get(i).get("sensor_key"); String name = (String) sensors.get(i).get("name"); - if (i == sensors.size() - 1) { - sensorKeyColumn += "AVG(json -> '$." + sensorKey + "[0]') " + sensorKey; - } else { - sensorKeyColumn += "AVG(json -> '$." + sensorKey + "[0]') " + sensorKey + ","; - } + sensorKeyColumn += "AVG(json -> '$." + sensorKey + "[0]') " + sensorKey; + if (i != sensors.size() - 1) { + sensorKeyColumn += " ,"; + } sensorKeys.add(sensorKey + "-" + name); } return sensorKeyColumn; } + @Override + public Map<String, Object> getMonthAverageBySensor(Map<String, Object> parameters) { + ValidateUtil.notNull(parameters.get("mac"), "param.is.null"); + ValidateUtil.notNull(parameters.get("macKey"), "param.is.null"); + Map<String, Object> result = new HashMap<String, Object>(); + Date date = new Date(); + Date end = truncate(date, Calendar.DATE), start; + // ��������������������������������������� + if (1 == Calendar.getInstance().get(Calendar.DAY_OF_MONTH)) { + // ���������1���00:00:00 + start = truncate(addMonths(date, -1), Calendar.MONTH); + } else { + // ���������1���00:00:00 + start = truncate(date, Calendar.MONTH); + } + parameters.put("start", start); + parameters.put("end", end); + + String sensorKey = (String) parameters.get("macKey"); + String sensorKeyColumn = "AVG(json -> '$." + sensorKey + "[0]') " + sensorKey; + parameters.put("sensorKeyColumn", sensorKeyColumn); + + Map<String, Double> average = historyMinutelyMapper.getSersionAvgByDevice(parameters); + if (isEmpty(average)) { + result.put("average", NULL_VALUE); + } else { + result.put("average", String.format("%.2f", average.get(sensorKey))); + } + return result; + } + } diff --git a/src/main/resources/mapper/HistoryMinutelyMapper.xml b/src/main/resources/mapper/HistoryMinutelyMapper.xml index 99b0cb4..cdccfe8 100644 --- a/src/main/resources/mapper/HistoryMinutelyMapper.xml +++ b/src/main/resources/mapper/HistoryMinutelyMapper.xml @@ -2,14 +2,9 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.moral.mapper.HistoryMinutelyMapper"> - <select id="getDayAQIByDevice" resultType="map"> + <select id="getSersionAvgByDevice" resultType="map"> SELECT - AVG(json -> '$.e1[0]') e1, - AVG(json -> '$.e2[0]') e2, - AVG(json -> '$.e10[0]') e10, - AVG(json -> '$.e11[0]') e11, - AVG(json -> '$.e15[0]') e15, - AVG(json -> '$.e16[0]') e16 + ${sensorKeyColumn} FROM history_minutely WHERE diff --git a/src/main/resources/system/sysConfig.properties b/src/main/resources/system/sysConfig.properties index 82f508b..781d3c7 100644 --- a/src/main/resources/system/sysConfig.properties +++ b/src/main/resources/system/sysConfig.properties @@ -25,6 +25,6 @@ e17-standard=150 e18-standard=9 e19-standard=50 -orgId=-1 +orgId=5 password=123456 noFilters=/screen/**,/**/*.jsp,/**/*.js,/**/*.png,/**/*.ico \ No newline at end of file -- Gitblit v1.8.0