From 29d968d69ee52e7b0f87132467b21940fa9361cb Mon Sep 17 00:00:00 2001
From: xufenglei <xufenglei>
Date: Fri, 20 Apr 2018 09:11:08 +0800
Subject: [PATCH] 报警数据 饼图功能
---
src/main/resources/mapper/AlarmMapper.xml | 35 +++++++++++++----
src/main/java/com/moral/service/impl/AlarmServiceImpl.java | 55 ++++++++++++++++++---------
src/main/java/com/moral/controller/ScreenController.java | 30 ++++++++++++++
3 files changed, 92 insertions(+), 28 deletions(-)
diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java
index 48892d7..7adfbde 100644
--- a/src/main/java/com/moral/controller/ScreenController.java
+++ b/src/main/java/com/moral/controller/ScreenController.java
@@ -26,6 +26,7 @@
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -40,6 +41,7 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
+import com.moral.common.bean.Constants;
import com.moral.common.bean.JsonData;
import com.moral.common.bean.PageResult;
import com.moral.common.bean.ResultBean;
@@ -53,6 +55,7 @@
import com.moral.entity.alarm.AlarmSensorLevel;
import com.moral.service.AccountService;
import com.moral.service.AlarmConfigService;
+import com.moral.service.AlarmService;
import com.moral.service.AreaService;
import com.moral.service.DeviceService;
import com.moral.service.HistoryMinutelyService;
@@ -67,6 +70,7 @@
@RestController
@RequestMapping("/screen")
//@CrossOrigin(origins = "*", maxAge = 3600)
+@SuppressWarnings({ "rawtypes", "unchecked", "unused" })
public class ScreenController {
public static Logger log = Logger.getLogger(ScreenController.class);
@Resource
@@ -108,6 +112,8 @@
/** The level key. */
private String levelKey = "alarm_";
+ @Resource
+ private AlarmService alarmService;
/**
* Screen login. ������������
*
@@ -150,7 +156,6 @@
* the request
* @return the alarm levels
*/
- @SuppressWarnings("resource")
@GetMapping("alarm-levels")
public Object getAlarmLevels(HttpServletRequest request, Integer orgId) {
List<Map<String,Object>> sensorAlarmList = null;
@@ -445,4 +450,27 @@
}
return new ResultBean<List<Map<String, Object>>>(list);
}
+
+ @GetMapping("report_alarm_datas")
+ public ResultBean<List<Map<String, Object>>> getAlarmData(HttpServletRequest request) throws Exception {
+ Map<String, Object> parameters = getParametersStartingWith(request, null);
+ parameters.put("type", "month");
+ String sensorKey = "list";
+ if (!ObjectUtils.isEmpty(parameters.get("sensorKey"))) {
+ sensorKey = parameters.remove("sensorKey").toString();
+ List<String> sensorKeys = new ArrayList<String>();
+ sensorKeys.add(sensorKey);
+ parameters.put("sensors", sensorKeys);
+ }
+ if (!ObjectUtils.isEmpty(parameters.get("organizationId"))) {
+ if (!Constants.isNotSpecialOrgId(Integer.valueOf(parameters.get("organizationId").toString()))) {
+ parameters.remove("organizationId");
+ }
+ }
+ Map pieData = alarmService.getPieData(parameters);
+
+ List<Map<String, Object>> list = (List<Map<String, Object>>) pieData.get(sensorKey);
+
+ return new ResultBean<List<Map<String, Object>>>(list);
+ }
}
diff --git a/src/main/java/com/moral/service/impl/AlarmServiceImpl.java b/src/main/java/com/moral/service/impl/AlarmServiceImpl.java
index 8b2e03c..f04bc52 100644
--- a/src/main/java/com/moral/service/impl/AlarmServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/AlarmServiceImpl.java
@@ -28,33 +28,52 @@
@Override
public Map getPieData(Map<String, Object> parameters) {
+ Map<String, Object> resultMap = new LinkedHashMap<String, Object>();
try {
historyMinutelyService.convertQueryParam(parameters);
} catch (ParseException e) {
e.printStackTrace();
}
List<Map<String, Object>> alarmDatas = alarmMapper.getAlarmData(parameters);
- Map<String, List> resultMap = new LinkedHashMap<String, List>();
- for (Map<String, Object> alarmData : alarmDatas) {
- String name = alarmData.remove("name").toString();
- alarmData.remove("sum");
- for (Map.Entry<String, Object> entry : alarmData.entrySet()) {
- String key = entry.getKey();
- Object value = entry.getValue().toString();
- if (!"0".equals(value)) {
- List list;
- Map<String, Object> map = new HashMap<String, Object>();
- if (ObjectUtils.isEmpty(resultMap.get(key))) {
- list = new ArrayList();
- } else {
- list = resultMap.get(key);
+ Object dimension = parameters.get("dimension");
+ if ("monitorPoint".equals(dimension)) {
+ for (Map<String, Object> alarmData : alarmDatas) {
+ String name = alarmData.remove("name").toString();
+ alarmData.remove("sum");
+ for (Map.Entry<String, Object> entry : alarmData.entrySet()) {
+ String key = entry.getKey();
+ Object value = entry.getValue().toString();
+ if (!"0".equals(value)) {
+ List list;
+ Map<String, Object> map = new HashMap<String, Object>();
+ if (ObjectUtils.isEmpty(resultMap.get(key))) {
+ list = new ArrayList();
+ } else {
+ list = (List) resultMap.get(key);
+ }
+ map.put("name", name);
+ map.put("value", value);
+ list.add(map);
+ resultMap.put(key, list);
}
- map.put("name", name);
- map.put("value", value);
- list.add(map);
- resultMap.put(key, list);
}
}
+ } else {
+ Map<String, Object> alarmData = alarmDatas.get(0);
+ List<String> sensors = (List<String>) parameters.get("sensors");
+ List list = new ArrayList();
+ for (String key : alarmData.keySet()) {
+ for (String sensor : sensors) {
+ String[] split = sensor.split("-");
+ if (key.equals(split[0]) && !"0".equals(alarmData.get(key).toString())) {
+ Map<String, Object> map = new HashMap<String, Object>();
+ map.put("name", split[1]);
+ map.put("value", alarmData.get(key));
+ list.add(map);
+ }
+ }
+ }
+ resultMap.put("list", list);
}
return resultMap;
}
diff --git a/src/main/resources/mapper/AlarmMapper.xml b/src/main/resources/mapper/AlarmMapper.xml
index e9abda1..cad7fec 100644
--- a/src/main/resources/mapper/AlarmMapper.xml
+++ b/src/main/resources/mapper/AlarmMapper.xml
@@ -6,21 +6,35 @@
<if test="dimension=='monitorPoint'">
`name`,
</if>
- <foreach collection="sensorKeys" item="sensorKey" separator=",">
- SUM( ${sensorKey} ) AS '${sensorKey}'
- </foreach>
- <foreach close=" AS 'sum' " collection="sensorKeys" item="sensorKey" open="," separator="+">
- SUM( ${sensorKey} )
- </foreach>
+ <choose>
+ <when test="sensorKeys.size > 0">
+ <foreach collection="sensorKeys" separator="," item="sensorKey">
+ SUM( ${sensorKey} ) AS '${sensorKey}'
+ </foreach>
+ <foreach collection="sensorKeys" open="," separator="+" close=" AS 'sum' " item="sensorKey">
+ SUM( ${sensorKey} )
+ </foreach>
+ </when>
+ <otherwise>
+ time
+ </otherwise>
+ </choose>
FROM
(
SELECT
<if test="dimension=='monitorPoint'">
mp.`name`,
</if>
- <foreach collection="sensorKeys" item="sensorKey" separator=",">
- CASE COUNT( json -> '$.${sensorKey}' ) WHEN 0 THEN 0 ELSE 1 END AS '${sensorKey}'
- </foreach>
+ <choose>
+ <when test="sensorKeys.size > 0">
+ <foreach collection="sensorKeys" separator="," item="sensorKey">
+ CASE COUNT( json -> '$.${sensorKey}' ) WHEN 0 THEN 0 ELSE 1 END AS '${sensorKey}'
+ </foreach>
+ </when>
+ <otherwise>
+ DATE_FORMAT( h.time, '%Y-%m-%d' ) AS 'time'
+ </otherwise>
+ </choose>
FROM
alarm h,
device d,
@@ -41,6 +55,9 @@
<if test="monitorPointId != null">
AND mp.id = #{monitorPointId}
</if>
+ <if test="organizationId != null">
+ AND mp.organization_id = #{organizationId}
+ </if>
<if test="mac != null">
AND d.mac = #{mac}
</if>
--
Gitblit v1.8.0