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