src/main/java/com/moral/controller/ReportController.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/moral/mapper/AlarmDailyMapper.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/moral/service/AlarmDailyService.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/moral/service/impl/AlarmDailyServiceImpl.java | ●●●●● patch | view | raw | blame | history | |
src/main/resources/mapper/AlarmDailyMapper.xml | ●●●●● patch | view | raw | blame | history |
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); } } 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); } 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); } 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; } } 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>