From b1935a09641bc915c61f1868d911adf455d79833 Mon Sep 17 00:00:00 2001 From: ZhuDongming <773644075@qq.com> Date: Tue, 28 Apr 2020 09:33:41 +0800 Subject: [PATCH] update大屏本月平均值查询表 --- src/main/java/com/moral/service/HistoryMinutelyService.java | 2 ++ src/main/java/com/moral/mapper/HistoryMinutelyMapper.java | 2 ++ src/main/resources/mapper/HistoryMinutelyMapper.xml | 26 ++++++++++++++++++++++++++ src/main/java/com/moral/controller/ScreenController.java | 2 +- src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java | 28 ++++++++++++++++++++++++++++ 5 files changed, 59 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java index 3920b26..9403bfd 100644 --- a/src/main/java/com/moral/controller/ScreenController.java +++ b/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") diff --git a/src/main/java/com/moral/mapper/HistoryMinutelyMapper.java b/src/main/java/com/moral/mapper/HistoryMinutelyMapper.java index 4e1b68f..12ba243 100644 --- a/src/main/java/com/moral/mapper/HistoryMinutelyMapper.java +++ b/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); diff --git a/src/main/java/com/moral/service/HistoryMinutelyService.java b/src/main/java/com/moral/service/HistoryMinutelyService.java index 2408384..7ce8b6f 100644 --- a/src/main/java/com/moral/service/HistoryMinutelyService.java +++ b/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); diff --git a/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java index f7b8b50..21f7b13 100644 --- a/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java +++ b/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; + } + /** * ������������������������������������������������������������������ * diff --git a/src/main/resources/mapper/HistoryMinutelyMapper.xml b/src/main/resources/mapper/HistoryMinutelyMapper.xml index 4ba0029..bf83a38 100644 --- a/src/main/resources/mapper/HistoryMinutelyMapper.xml +++ b/src/main/resources/mapper/HistoryMinutelyMapper.xml @@ -31,6 +31,32 @@ AND time < #{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 < #{end} + </select> + <select id="getMonitorPointOrDeviceAvgData" resultType="java.util.Map"> SELECT DATE_FORMAT(time, #{typeFormat}) time -- Gitblit v1.8.0