From 106dbe94a4bcfc90fc646b0a1e017e23ad2b058b Mon Sep 17 00:00:00 2001 From: xufenglei <xufenglei> Date: Mon, 07 May 2018 15:15:04 +0800 Subject: [PATCH] 三级警报数据 --- src/main/java/com/moral/service/impl/AlarmDailyServiceImpl.java | 38 +++++++++++++++++++ src/main/java/com/moral/controller/ReportController.java | 12 +++++- src/main/resources/mapper/AlarmDailyMapper.xml | 17 ++++++++ src/main/java/com/moral/mapper/AlarmDailyMapper.java | 2 + src/main/java/com/moral/service/AlarmDailyService.java | 2 + 5 files changed, 68 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/moral/controller/ReportController.java b/src/main/java/com/moral/controller/ReportController.java index 39b6a6a..b95ea24 100644 --- a/src/main/java/com/moral/controller/ReportController.java +++ b/src/main/java/com/moral/controller/ReportController.java @@ -82,9 +82,17 @@ @GetMapping("alarm-year") public ResultBean<List<Integer>> getAlarmDataByYear(HttpServletRequest request) throws Exception { Map<String, Object> parameters = getParametersStartingWith(request, null); - List<Integer> alarmDataByYear = alarmDailyService.getAlarmDataByYear(parameters); + List<Integer> result = alarmDailyService.getAlarmDataByYear(parameters); - return new ResultBean<List<Integer>>(alarmDataByYear); + return new ResultBean<List<Integer>>(result); + } + + @GetMapping("alarm-month") + public ResultBean<List<Map<String, Object>>> getAlarmDataByMonth(HttpServletRequest request) throws Exception { + Map<String, Object> parameters = getParametersStartingWith(request, null); + List<Map<String, Object>> result = alarmDailyService.getAlarmDataByMonth(parameters); + + return new ResultBean<List<Map<String, Object>>>(result); } } diff --git a/src/main/java/com/moral/mapper/AlarmDailyMapper.java b/src/main/java/com/moral/mapper/AlarmDailyMapper.java index 1fc7606..7e4cc6d 100644 --- a/src/main/java/com/moral/mapper/AlarmDailyMapper.java +++ b/src/main/java/com/moral/mapper/AlarmDailyMapper.java @@ -12,4 +12,6 @@ List<Map<String, Object>> getAlarmDataByYear(Map<String, Object> parameters); + Map<String, Object> getAlarmDataByMonth(Map<String, Object> parameters); + } \ No newline at end of file diff --git a/src/main/java/com/moral/service/AlarmDailyService.java b/src/main/java/com/moral/service/AlarmDailyService.java index 1108fd6..6f42c9d 100644 --- a/src/main/java/com/moral/service/AlarmDailyService.java +++ b/src/main/java/com/moral/service/AlarmDailyService.java @@ -10,4 +10,6 @@ List<Integer> getAlarmDataByYear(Map<String, Object> parameters); + List<Map<String, Object>> getAlarmDataByMonth(Map<String, Object> parameters); + } diff --git a/src/main/java/com/moral/service/impl/AlarmDailyServiceImpl.java b/src/main/java/com/moral/service/impl/AlarmDailyServiceImpl.java index de4d232..2fb7446 100644 --- a/src/main/java/com/moral/service/impl/AlarmDailyServiceImpl.java +++ b/src/main/java/com/moral/service/impl/AlarmDailyServiceImpl.java @@ -5,10 +5,13 @@ import java.time.temporal.TemporalAdjusters; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import java.util.stream.Collectors; import javax.annotation.Resource; @@ -16,6 +19,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; +import com.moral.entity.Sensor; import com.moral.mapper.AlarmDailyMapper; import com.moral.mapper.SensorMapper; import com.moral.service.AlarmDailyService; @@ -119,4 +123,38 @@ return Arrays.asList(result); } + @Override + public List<Map<String, Object>> getAlarmDataByMonth(Map<String, Object> parameters) { + LocalDate localDate = LocalDate.now(); + List<Sensor> sensors = sensorMapper.selectAll(); + parameters.put("start", localDate.with(TemporalAdjusters.firstDayOfMonth())); + parameters.put("end", localDate.with(TemporalAdjusters.firstDayOfNextMonth())); + parameters.put("sensors", sensors); + Map<String, Object> map = alarmDailyMapper.getAlarmDataByMonth(parameters); + List<Entry<String, Object>> list = new ArrayList<Entry<String,Object>>(map.entrySet()); + Collections.sort(list, new Comparator<Map.Entry<String, Object>>() { + @Override + public int compare(Entry<String, Object> o1, Entry<String, Object> o2) { + if (o2.getValue().equals(o1.getValue())) { + return Integer.compare(Integer.valueOf(o1.getKey().replace("e", "")),Integer.valueOf(o2.getKey().replace("e", ""))); + } + return Integer.valueOf(o2.getValue().toString()).compareTo(Integer.valueOf(o1.getValue().toString())); + } + }); + List<Map<String, Object>> resultList = new ArrayList<Map<String,Object>>(); + for (Entry<String, Object> entry : list) { + for (Sensor sensor : sensors) { + if (!entry.getValue().toString().equals("0") && entry.getKey().equals(sensor.getSensorKey())) { + Map<String, Object> map2 = new HashMap<String, Object>(); + map2.put(sensor.getName(), entry.getValue()); + resultList.add(map2); + sensors.remove(sensor); + break; + } + } + } + + return resultList; + } + } diff --git a/src/main/resources/mapper/AlarmDailyMapper.xml b/src/main/resources/mapper/AlarmDailyMapper.xml index db13fc0..b29f1c5 100644 --- a/src/main/resources/mapper/AlarmDailyMapper.xml +++ b/src/main/resources/mapper/AlarmDailyMapper.xml @@ -80,7 +80,7 @@ SELECT DATE_FORMAT(h.time, '%Y-%m') AS 'time' <foreach collection="sensorKeys" open="," separator="+" close=" AS 'sum' " item="sensorKey"> - COUNT(json -> '$.${sensorKey}') + COUNT(json -> '$.${sensorKey}') </foreach> FROM alarm_daily h @@ -93,5 +93,20 @@ GROUP BY DATE_FORMAT(h.time, '%Y-%m') </select> + + <select id="getAlarmDataByMonth" resultType="java.util.Map"> + SELECT + <foreach collection="sensors" separator="," item="sensor"> + COUNT(json -> '$.${sensor.sensorKey}') AS '${sensor.sensorKey}' + </foreach> + FROM + alarm_daily h + WHERE + h.time >= #{start} + AND h.time <![CDATA[<]]> #{end} + <if test="state != null"> + AND h.state = #{state} + </if> + </select> </mapper> \ No newline at end of file -- Gitblit v1.8.0