From 6688e50ba02988d742baadaca156a303a90b6191 Mon Sep 17 00:00:00 2001
From: fengxiang <110431245@qq.com>
Date: Fri, 20 Apr 2018 14:03:37 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/main/java/com/moral/service/HistoryMinutelyService.java          |   11 +
 src/main/resources/mapper/AlarmMapper.xml                            |   76 ++++++++++
 src/main/java/com/moral/entity/Alarm.java                            |   35 +++++
 src/main/java/com/moral/mapper/AlarmMapper.java                      |   13 +
 src/main/java/com/moral/service/impl/AlarmServiceImpl.java           |   81 +++++++++++
 src/main/java/com/moral/controller/ReportController.java             |   32 +++-
 src/main/java/com/moral/service/AlarmService.java                    |   10 +
 src/main/java/com/moral/controller/ScreenController.java             |   30 ++++
 src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java |   86 ++++++++---
 9 files changed, 333 insertions(+), 41 deletions(-)

diff --git a/src/main/java/com/moral/controller/ReportController.java b/src/main/java/com/moral/controller/ReportController.java
index ed398a7..1d247bb 100644
--- a/src/main/java/com/moral/controller/ReportController.java
+++ b/src/main/java/com/moral/controller/ReportController.java
@@ -4,10 +4,9 @@
 import static com.moral.common.util.WebUtils.getParametersStartingWith;
 
 import java.io.OutputStream;
-import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
@@ -23,9 +22,10 @@
 
 import com.moral.common.bean.ResultBean;
 import com.moral.entity.charts.LineChartCriteria;
+import com.moral.service.AlarmService;
 import com.moral.service.HistoryMinutelyService;
 
-@SuppressWarnings("unchecked")
+@SuppressWarnings({ "unchecked", "rawtypes" })
 @RestController
 @RequestMapping("report")
 @CrossOrigin(origins = "*", maxAge = 3600)
@@ -34,11 +34,14 @@
 	@Resource
 	private HistoryMinutelyService historyMinutelyService;
 
+	@Resource
+	private AlarmService alarmService;
+	
 	@GetMapping("compare")
-	public ResultBean<Map<String, List<Object>>> getCompareReport(HttpServletRequest request) throws Exception {
+	public ResultBean<Map<String, List>> getCompareReport(HttpServletRequest request) throws Exception {
 		Map<String, Object> parameters = getParametersStartingWith(request, null);
-		Map<String, List<Object>> demo = historyMinutelyService.getCompareReport(parameters);
-		return new ResultBean<Map<String, List<Object>>>(demo);
+		Map<String, List> demo = historyMinutelyService.getCompareReport(parameters);
+		return new ResultBean<Map<String, List>>(demo);
 	}
 
 	@PostMapping("line-chart")
@@ -50,7 +53,7 @@
 	public ResultBean<Boolean> getExcelReport(HttpServletRequest request, HttpServletResponse response) throws Exception {
 		Map<String, Object> parameters = getParametersStartingWith(request, null);
 		List<Map<String, Object>> list = historyMinutelyService.getMonitorPointOrDeviceAvgData(parameters);
-		List<String> sensors= (List<String>) parameters.get("sensors");
+		List<String> sensors = (List<String>) parameters.get("sensors");
 		String[][] exportColumn = new String[sensors.size() + 1][];
 		exportColumn[0] = new String[] { "������", "20", "time" };
 		for (int index = 0; index < sensors.size(); index++) {
@@ -58,14 +61,23 @@
 			String name = split[1];
 			String key = split[0];
 			String unit = split[2];
-			if (!ObjectUtils.isEmpty(unit) && !"null".equals(unit) ) {
+			if (!ObjectUtils.isEmpty(unit) && !"null".equals(unit)) {
 				name += "-" + unit;
-			} 
-			exportColumn[index + 1] = new String[] { name , "10", key };
+			}
+			exportColumn[index + 1] = new String[] { name, "10", key };
 		}
 		OutputStream outputStream = exportData(response, "Excel������", list, exportColumn);
 		outputStream.flush();
 		outputStream.close();
 		return new ResultBean<Boolean>(true);
 	}
+	
+	@GetMapping("pie")
+	public ResultBean<Map<String, Object>> getPieData(HttpServletRequest request) throws Exception {
+		Map<String, Object> parameters = getParametersStartingWith(request, null);
+		Map pieData = alarmService.getPieData(parameters);
+		
+		return new ResultBean<Map<String, Object>>(pieData);
+	}
+
 }
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/entity/Alarm.java b/src/main/java/com/moral/entity/Alarm.java
new file mode 100644
index 0000000..55f7f2f
--- /dev/null
+++ b/src/main/java/com/moral/entity/Alarm.java
@@ -0,0 +1,35 @@
+package com.moral.entity;
+
+import java.util.Date;
+
+import lombok.Data;
+
+@Data
+public class Alarm {
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column alarm.mac
+     *
+     * @mbg.generated Mon Apr 16 09:27:36 CST 2018
+     */
+    private String mac;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column alarm.json
+     *
+     * @mbg.generated Mon Apr 16 09:27:36 CST 2018
+     */
+    private String json;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column alarm.time
+     *
+     * @mbg.generated Mon Apr 16 09:27:36 CST 2018
+     */
+    private Date time;
+}
\ No newline at end of file
diff --git a/src/main/java/com/moral/mapper/AlarmMapper.java b/src/main/java/com/moral/mapper/AlarmMapper.java
new file mode 100644
index 0000000..a184316
--- /dev/null
+++ b/src/main/java/com/moral/mapper/AlarmMapper.java
@@ -0,0 +1,13 @@
+package com.moral.mapper;
+
+import java.util.List;
+import java.util.Map;
+
+import com.moral.common.mapper.BaseMapper;
+import com.moral.entity.Alarm;
+
+public interface AlarmMapper extends BaseMapper<Alarm> {
+	
+	List<Map<String, Object>> getAlarmData(Map<String, Object> parameters);
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/moral/service/AlarmService.java b/src/main/java/com/moral/service/AlarmService.java
new file mode 100644
index 0000000..e3a8a45
--- /dev/null
+++ b/src/main/java/com/moral/service/AlarmService.java
@@ -0,0 +1,10 @@
+package com.moral.service;
+
+import java.util.Map;
+
+@SuppressWarnings("rawtypes")
+public interface AlarmService {
+
+	Map getPieData(Map<String, Object> parameters);
+
+}
diff --git a/src/main/java/com/moral/service/HistoryMinutelyService.java b/src/main/java/com/moral/service/HistoryMinutelyService.java
index f1dacc2..0c106f6 100644
--- a/src/main/java/com/moral/service/HistoryMinutelyService.java
+++ b/src/main/java/com/moral/service/HistoryMinutelyService.java
@@ -1,16 +1,17 @@
 package com.moral.service;
 
-import com.moral.entity.charts.LineChartCriteria;
-import com.moral.entity.charts.PairData;
-
+import java.text.ParseException;
 import java.util.List;
 import java.util.Map;
 
+import com.moral.entity.charts.LineChartCriteria;
+
+@SuppressWarnings("rawtypes")
 public interface HistoryMinutelyService {
 
 	Map<String, Object> getDayAQIByDevice(Map<String, Object> parameters);
 	
-	Map<String, List<Object>> getCompareReport(Map<String, Object> parameters) throws Exception;
+	Map<String, List> getCompareReport(Map<String, Object> parameters) throws Exception;
 
 	List<Map<String, Object>> getMonitorPointOrDeviceAvgData(Map<String, Object> parameters) throws Exception;
 
@@ -18,4 +19,6 @@
 
 
     Map<String, List<List<Double>>> queryLineChartDateByCrieria(LineChartCriteria lineChartCriteria);
+
+	void convertQueryParam(Map<String, Object> parameters) throws ParseException;
 }
diff --git a/src/main/java/com/moral/service/impl/AlarmServiceImpl.java b/src/main/java/com/moral/service/impl/AlarmServiceImpl.java
new file mode 100644
index 0000000..f04bc52
--- /dev/null
+++ b/src/main/java/com/moral/service/impl/AlarmServiceImpl.java
@@ -0,0 +1,81 @@
+package com.moral.service.impl;
+
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+
+import com.moral.mapper.AlarmMapper;
+import com.moral.service.AlarmService;
+import com.moral.service.HistoryMinutelyService;
+
+@Service
+@SuppressWarnings({ "rawtypes", "unchecked" })
+public class AlarmServiceImpl implements AlarmService {
+
+	@Resource
+	private AlarmMapper alarmMapper;
+
+	@Resource
+	private HistoryMinutelyService historyMinutelyService;
+
+	@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);
+		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);
+					}
+				}
+			}
+		} 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/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
index e71ff2a..d1653fc 100644
--- a/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
@@ -4,7 +4,7 @@
 import static org.springframework.util.ObjectUtils.isEmpty;
 
 import java.math.BigDecimal;
-import java.math.RoundingMode;
+import java.text.ParseException;
 import java.time.LocalDate;
 import java.time.temporal.TemporalAdjusters;
 import java.util.ArrayList;
@@ -15,7 +15,6 @@
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
@@ -31,11 +30,6 @@
 
 import javax.annotation.Resource;
 
-import com.moral.common.util.ReportTimeFormat;
-import com.moral.entity.charts.DataCondition;
-import com.moral.entity.charts.LineChartCriteria;
-import com.moral.entity.charts.PairData;
-import com.moral.entity.charts.TimePeriod;
 import org.apache.commons.lang3.time.DateUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
@@ -43,17 +37,21 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.TypeReference;
 import com.moral.common.util.CalculateUtils;
+import com.moral.common.util.ReportTimeFormat;
 import com.moral.common.util.ResourceUtil;
 import com.moral.common.util.ValidateUtil;
-import com.moral.entity.Device;
 import com.moral.entity.Sensor;
+import com.moral.entity.charts.DataCondition;
+import com.moral.entity.charts.LineChartCriteria;
+import com.moral.entity.charts.TimePeriod;
+import com.moral.mapper.AlarmMapper;
 import com.moral.mapper.DeviceMapper;
 import com.moral.mapper.HistoryMinutelyMapper;
 import com.moral.mapper.SensorMapper;
 import com.moral.service.HistoryMinutelyService;
 
 @Service
-@SuppressWarnings({ "unchecked", "unused" })
+@SuppressWarnings({ "unchecked", "unused", "rawtypes" })
 public class HistoryMinutelyServiceImpl implements HistoryMinutelyService {
 
 	@Resource
@@ -65,7 +63,8 @@
 	@Resource
 	private SensorMapper sensorMapper;
 
-	// volatile
+	@Resource
+	private AlarmMapper alarmMapper;
 
 	@Override
 	public Map<String, Object> getDayAQIByDevice(Map<String, Object> parameters) {
@@ -76,8 +75,7 @@
 		
 		// ������00:00:00
 		parameters.put("end", localDate);
-		String[] macKeys = { "e1", "e2", "e10", "e11", "e15", "e16" };
-		parameters.put("sensorKeys", Arrays.asList(macKeys));
+		parameters.put("sensorKeys", Arrays.asList("e1", "e2", "e10", "e11", "e15", "e16"));
 		Map<String, Double> average = historyMinutelyMapper.getSersionAvgByDevice(parameters);
 		return getAQIByDataMap(average);
 	}
@@ -135,8 +133,8 @@
 	}
 
 	@Override
-	public Map<String, List<Object>> getCompareReport(Map<String, Object> parameters) throws Exception {
-		Map<String, List<Object>> resultMap = new HashMap<String, List<Object>>();
+	public Map<String, List> getCompareReport(Map<String, Object> parameters) throws Exception {
+		Map<String, List> resultMap = new HashMap<String, List>();
 		List<Map<String, Object>> list = JSON.parseObject((String)parameters.remove("items"), new TypeReference<List<Map<String, Object>>>() {});
 		
 		String type = (String) parameters.get("type");
@@ -183,32 +181,58 @@
 		}
 		Object[] datas = new Object[list.size()];
 		Object[] deviceCounts = new Object[list.size()];
+		Object[] alarmDatas = new Object[list.size()];
 		Set<String> sensors = new TreeSet<String>(new Comparator<String>() {
 			@Override
 			public int compare(String o1, String o2) {
 				return Integer.compare(Integer.valueOf(o1.split("-")[0].replace("e", "")), Integer.valueOf(o2.split("-")[0].replace("e", "")));
 			}
 		});
+		Map<String, Double> sortMap = new HashMap<String, Double>();
 		for (Object object : dataList) {
 			Map<String, Object> map = (Map<String, Object>)object;
 			for (String key : map.keySet()) {
-				if (key.startsWith("data")) {
-					int index = Integer.valueOf(key.replace("data", ""));
-					datas[index] = map.get(key);
-				}
-				if (key.startsWith("deviceCount")) {
-					int index = Integer.valueOf(key.replace("deviceCount", ""));
-					deviceCounts[index] = map.get(key);
-				}
-				if (key.startsWith("sensors")) {
-					sensors.addAll((List<String>) map.get(key));
+				int index = Integer.valueOf(key.substring(key.length() - 1));
+				String actual = key.substring(0, key.length() - 1);
+				Object obj = map.get(key);
+				switch (actual) {
+				case "data":
+					datas[index] = obj;
+					break;
+				case "deviceCount":
+					deviceCounts[index] = obj;
+					break;
+				case "alarmData":
+					alarmDatas[index] = obj;
+					if (!ObjectUtils.isEmpty(obj)) {
+						Map<String, BigDecimal> mapData = (Map<String, BigDecimal>) obj;
+						BigDecimal sum = mapData.remove("sum");
+						for (Entry<String, BigDecimal> entry : mapData.entrySet()) {
+							sortMap.put(entry.getKey() + "-" + index, new BigDecimal(100).multiply(entry.getValue())
+									.divide(sum, 2, BigDecimal.ROUND_HALF_UP).doubleValue());
+						}
+					}
+					break;
+				case "sensors":
+					sensors.addAll((List<String>) obj);
+					break;
 				}
 			}
 		}
+		List<Map.Entry<String, Double>> sortList = new ArrayList<Map.Entry<String,Double>>(sortMap.entrySet());
+		Collections.sort(sortList,new Comparator<Map.Entry<String,Double>>(){
+			@Override
+			public int compare(Entry<String, Double> o1, Entry<String, Double> o2) {
+				return o1.getValue().compareTo(o2.getValue());
+			}
+			
+		});
 		resultMap.put("times", timeList);
 		resultMap.put("datas", Arrays.asList(datas));
 		resultMap.put("deviceCounts", Arrays.asList(deviceCounts));
+		resultMap.put("alarmDatas", Arrays.asList(alarmDatas));
 		resultMap.put("sensors", new ArrayList<Object>(sensors));
+		resultMap.put("sortList", sortList);
 		return resultMap;
 	}
 
@@ -250,11 +274,23 @@
 		resultMap.put("deviceCount" + part, deviceCount);
 		resultMap.put("data" + part, doubleMap);
 		resultMap.put("sensors" + part, sensors);
+		Object type = parameters.get("type");
+		if ("year".equals(type) || "month".equals(type)) {
+			parameters.put("sensorKeys", Arrays.asList("e1", "e2", "e10", "e11", "e15", "e16"));
+			resultMap.put("alarmData" + part, alarmMapper.getAlarmData(parameters).get(0));
+		}
 		return resultMap;
 	}
 	
 	@Override
 	public List<Map<String, Object>> getMonitorPointOrDeviceAvgData(Map<String, Object> parameters) throws Exception {
+		convertQueryParam(parameters);
+
+		return historyMinutelyMapper.getMonitorPointOrDeviceAvgData(parameters);
+	}
+
+	@Override
+	public void convertQueryParam(Map<String, Object> parameters) throws ParseException {
 		String type = (String) parameters.get("type");
 		if (!parameters.containsKey("field")) {
 			parameters.putAll(getElementByType(type));
@@ -294,8 +330,6 @@
 		}
 		parameters.put("sensorKeys", sensorKeys);
 		parameters.put("sensors", sensors);
-
-		return historyMinutelyMapper.getMonitorPointOrDeviceAvgData(parameters);
 	}
 
 	@Override
diff --git a/src/main/resources/mapper/AlarmMapper.xml b/src/main/resources/mapper/AlarmMapper.xml
new file mode 100644
index 0000000..cad7fec
--- /dev/null
+++ b/src/main/resources/mapper/AlarmMapper.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.moral.mapper.AlarmMapper">
+	<select id="getAlarmData" resultType="java.util.LinkedHashMap">
+		SELECT
+			<if test="dimension=='monitorPoint'">
+				`name`,
+			</if>
+			<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>
+					<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,
+					monitor_point mp 
+				WHERE d.monitor_point_id = mp.id 
+					AND h.mac = d.mac 
+					AND h.time >= #{start}
+					AND h.time <![CDATA[<]]> #{end}
+					<if test="provinceCode != null">
+					AND mp.province_code = #{provinceCode}
+					</if>
+					<if test="cityCode != null">
+					AND mp.city_code = #{cityCode}
+					</if>
+					<if test="areaCode != null">
+					AND mp.area_code = #{areaCode}
+					</if>
+					<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>
+				GROUP BY
+					<if test="dimension=='monitorPoint'">
+						mp.id,
+					</if>
+					DATE_FORMAT( h.time, '%Y-%m-%d' )
+			) a
+		<if test="dimension=='monitorPoint'">
+			GROUP BY name
+		</if>
+			
+	</select>
+	
+</mapper>
\ No newline at end of file

--
Gitblit v1.8.0