xufenglei
2018-02-06 5b0347a811a6c948defb5320e71c43173280dfc2
更新
7 files modified
80 ■■■■ changed files
src/main/java/com/moral/controller/ReportController.java 4 ●●●● patch | view | raw | blame | history
src/main/java/com/moral/controller/ScreenController.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/moral/mapper/HistoryMinutelyMapper.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/moral/service/HistoryMinutelyService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java 59 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/HistoryMinutelyMapper.xml 9 ●●●● patch | view | raw | blame | history
src/main/resources/system/sysConfig.properties 2 ●●● patch | view | raw | blame | history
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();
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")
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);
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);
}
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 + ",";
            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;
    }
}
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
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