ZhuDongming
2020-04-28 b1935a09641bc915c61f1868d911adf455d79833
update大屏本月平均值查询表
5 files modified
60 ■■■■■ changed files
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 28 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/HistoryMinutelyMapper.xml 26 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/controller/ScreenController.java
@@ -463,7 +463,7 @@
    @GetMapping("month-sensor-average")
    public Map<String, Object> getMonthAverageBySensor(HttpServletRequest request) {
        Map<String, Object> parameters = getParametersStartingWith(request, null);
        return historyMinutelyService.getMonthAverageBySensor(parameters);
        return historyMinutelyService.getAverageBySensor(parameters);
    }
    @GetMapping("check-activate")
src/main/java/com/moral/mapper/HistoryMinutelyMapper.java
@@ -12,6 +12,8 @@
  Map<String, Double> getSersionAvgByDevice(Map<String, Object> parameters);
  Map<String, Double> getAvgByDevice(Map<String, Object> parameters);
  List<Map<String, Object>> getMonitorPointOrDeviceAvgData(Map<String, Object> parameters);
  List<Map<String, Object>> getAreaAvgDataByAreaCode(Map<String, Object> parameters);
src/main/java/com/moral/service/HistoryMinutelyService.java
@@ -19,6 +19,8 @@
    Map<String, Object> getMonthAverageBySensor(Map<String, Object> parameters);
    Map<String, Object> getAverageBySensor(Map<String, Object> parameters);
    List<Map<String, Object>> getAreaAvgDataByAreaCode(Map<String, Object> parameters) throws Exception;
    Map<String, List<List<Double>>> queryLineChartDateByCrieria(LineChartCriteria lineChartCriteria);
src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
@@ -444,6 +444,34 @@
    return result;
  }
    @Override
    public Map<String, Object> getAverageBySensor(Map<String, Object> parameters) {
        //ValidateUtil.notNull(parameters.get("mac"), "param.is.null");
        Object sensorKey = parameters.remove("macKey");
        ValidateUtil.notNull(sensorKey, "param.is.null");
        Map<String, Object> result = new HashMap<String, Object>();
        LocalDate end = LocalDate.now(), start;
        // 每月一日的数据取上月的数据
        if (1 == end.getDayOfMonth()) {
            // 上个月1日00:00:00
            start = end.plusDays(-1).with(TemporalAdjusters.firstDayOfMonth());
        } else {
            // 这个月1日00:00:00
            start = end.with(TemporalAdjusters.firstDayOfMonth());
        }
        parameters.put("start", start);
        parameters.put("end", end);
        parameters.put("sensorKeys", Arrays.asList(sensorKey));
        Map<String, Double> average = historyMinutelyMapper.getAvgByDevice(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
@@ -31,6 +31,32 @@
        AND time &lt; #{end}
    </select>
    <select id="getAvgByDevice" resultType="java.util.Map">
        SELECT
        <foreach collection="sensorKeys" separator="," item="sensorKey">
      AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}'
    </foreach>
        FROM
        history_daily
        WHERE
        mac IN
        (SELECT
        d.mac
        FROM
        device d
        WHERE
        d.is_delete = 0
        <if test="monitorPointId != null">
      AND d.monitor_point_id = #{monitorPointId}
    </if>
        <if test="mac != null">
      AND d.mac = #{mac}
    </if>
        )
        AND time >= #{start}
        AND time &lt; #{end}
    </select>
    <select id="getMonitorPointOrDeviceAvgData" resultType="java.util.Map">
        SELECT
        DATE_FORMAT(time, #{typeFormat}) time