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