From 32a9814316c4292750a8e432e8a7e04ae2bef1c9 Mon Sep 17 00:00:00 2001 From: ZhuDongming <773644075@qq.com> Date: Fri, 17 Apr 2020 14:53:20 +0800 Subject: [PATCH] update报表接口 --- src/main/resources/mapper/HistoryMinutelyMapper.xml | 25 +++++++++++++++++-------- src/main/java/com/moral/controller/ScreenController.java | 3 --- src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java | 13 ++++++++++++- 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java index e5518cc..bcf8f89 100644 --- a/src/main/java/com/moral/controller/ScreenController.java +++ b/src/main/java/com/moral/controller/ScreenController.java @@ -1408,9 +1408,6 @@ if (!CollectionUtils.isEmpty(macList)) { list = historyMinutelyService.getDevicesAvgDataToExcel(parameters); } - for (Map<String, Object> map : list) { - map.put("value", map.remove(sensorKey)); - } return new ResultBean<List<Map<String, Object>>>(list); } diff --git a/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java index e9edf52..0333593 100644 --- a/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java +++ b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java @@ -620,14 +620,25 @@ LocalDateTime end = value.with(TemporalAdjusters.lastDayOfMonth()); parameters.put("start", start); parameters.put("end", end); + int day=end.getDayOfMonth(); + List<String> timeList=new ArrayList<>(); + for(int i=0;i<=day-1;i++){ + timeList.add(start.plusDays(i).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); + } + parameters.put("timeList", timeList); }else if("day".equals(parameters.get("type"))){ String time = parameters.get("time")+"T00:00:00"; LocalDateTime value = LocalDateTime.parse(time); LocalDateTime end=value.plusHours(23); parameters.put("timeUnits", "hourly"); - parameters.put("typeFormat", "%Y-%m-%d %H"); + parameters.put("typeFormat", "%Y-%m-%d %H:%i"); parameters.put("start", time); parameters.put("end", end); + List<String> timeList=new ArrayList<>(); + for(int i=0;i<=23;i++){ + timeList.add(value.plusHours(i).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"))); + } + parameters.put("timeList", timeList); } return historyMinutelyMapper.getDevicesAvgDataToExcel(parameters); } diff --git a/src/main/resources/mapper/HistoryMinutelyMapper.xml b/src/main/resources/mapper/HistoryMinutelyMapper.xml index 6aedbcb..7af50a1 100644 --- a/src/main/resources/mapper/HistoryMinutelyMapper.xml +++ b/src/main/resources/mapper/HistoryMinutelyMapper.xml @@ -179,19 +179,26 @@ hm.time </select> - <select id="getDevicesAvgDataToExcel" resultType="java.util.Map"> - SELECT - d.name,DATE_FORMAT(time, #{typeFormat}) time, + <select id="getDevicesAvgDataToExcel" resultType="java.util.LinkedHashMap"> + select + rs.monitorPointName,rs.name, + <foreach collection="timeList" separator="," item="time"> + max(case time when #{time} then rs.${sensorKey} else null end) as #{time} + </foreach> + from + (SELECT + m.name as monitorPointName,d.name,DATE_FORMAT(time, #{typeFormat}) time, <foreach collection="sensorKeys" separator="," item="sensorKey"> AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}' </foreach> FROM history_${timeUnits} h, - device d + device d, + monitor_point m WHERE h.mac=d.mac - AND - h.time >= #{start} + AND d.monitor_point_id=m.id + AND h.time >= #{start} AND h.time <![CDATA[<=]]> #{end} AND h.mac in <foreach collection="macs" open="(" separator="," close=")" @@ -199,9 +206,11 @@ #{mac} </foreach> GROUP BY - h.mac,d.name,DATE_FORMAT(time, #{typeFormat}) + h.mac,m.name,d.name,DATE_FORMAT(time, #{typeFormat}) ORDER BY - h.mac + h.mac) rs + GROUP BY rs.monitorPointName,rs.name + order by rs.name </select> </mapper> \ No newline at end of file -- Gitblit v1.8.0