From 0b646569a295da41eed5cbbcc80309a7472a47a0 Mon Sep 17 00:00:00 2001
From: ZhuDongming <773644075@qq.com>
Date: Wed, 12 Jun 2019 15:30:47 +0800
Subject: [PATCH] 更改上传导包*问题

---
 src/main/resources/mapper/HistoryMinutelyMapper.xml |  126 +++++++++++++++++++++++++++++++++++------
 1 files changed, 107 insertions(+), 19 deletions(-)

diff --git a/src/main/resources/mapper/HistoryMinutelyMapper.xml b/src/main/resources/mapper/HistoryMinutelyMapper.xml
index 99b0cb4..3a2d3c1 100644
--- a/src/main/resources/mapper/HistoryMinutelyMapper.xml
+++ b/src/main/resources/mapper/HistoryMinutelyMapper.xml
@@ -1,29 +1,44 @@
 <?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.HistoryMinutelyMapper">
-
-	<select id="getDayAQIByDevice" resultType="map">
+<mapper namespace="com.moral.mapper.HistoryMinutelyMapper">
+	<resultMap id="PairDataResultMap" type="com.moral.entity.charts.PairData" >
+		<result column="format_time" property="category" jdbcType="VARCHAR" />
+		<result column="value" property="value" jdbcType="DOUBLE" />
+	</resultMap>
+	<select id="getSersionAvgByDevice" resultType="java.util.Map">
 		SELECT
-			AVG(json -> '$.e1[0]') e1,
-			AVG(json -> '$.e2[0]') e2,
-			AVG(json -> '$.e10[0]') e10,
-			AVG(json -> '$.e11[0]') e11,
-			AVG(json -> '$.e15[0]') e15,
-			AVG(json -> '$.e16[0]') e16
+			<foreach  collection="sensorKeys" separator="," item="sensorKey">
+				AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}'
+			</foreach>
 		FROM
 			history_minutely
 		WHERE
-			mac = #{mac}
+			mac IN
+				(SELECT
+					d.mac 
+				FROM
+					device d
+				WHERE
+					d.is_delete = 0 
+					<if test="monitorPointId != null">
+					AND d.monitor_point_id = #{monitorPointId}
+					</if>
+					<if test="mac != null">
+					AND d.mac = #{mac}
+					</if>
+				)	
 		AND time >= #{start}
 		AND time &lt; #{end}
 	</select>
 	
-	<select id="getMonitorPointOrDeviceAvgData" resultType="map">
+	<select id="getMonitorPointOrDeviceAvgData" resultType="java.util.Map">
 		SELECT
-			DATE_FORMAT(time, #{typeFormat}) time,
-			${sensorKeyColumn}
+			DATE_FORMAT(time, #{typeFormat}) time
+			<foreach  collection="sensorKeys" open="," separator="," item="sensorKey">
+				AVG(json->'$.${sensorKey}[0]') AS '${sensorKey}'
+			</foreach>
 		FROM
-			history_minutely h
+			history_${timeUnits} h
 		WHERE
 			h.time >= #{start}
 		AND h.time <![CDATA[<]]> #{end}
@@ -32,10 +47,29 @@
 		</if>
 		<if test="mac == null">
 		AND	h.mac IN
-			<foreach  collection="macs" open="(" separator="," close=")" item="listItem">
-				#{listItem}
-			</foreach>
-		
+			(SELECT
+				d.mac 
+			FROM
+				device d,
+				monitor_point mp 
+			WHERE
+				d.monitor_point_id = mp.id 
+				<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="professionId != null">
+				AND d.profession_id = #{professionId}
+				</if>
+			)	
 		</if>
 		
 		GROUP BY
@@ -43,5 +77,59 @@
 		ORDER BY
 			time
 	</select>
-	
+	<select id="selectLineChartDateByCrieria" resultType="java.util.Map">
+			SELECT
+				<choose>
+					<when test="'MINUTE'==dataCondition.timeUnits.toString() and 'DEVICE'==dataCondition.areaRange.toString()">
+						<foreach collection="sensorKeys"
+								 item="sensorKey" separator="," close=",">
+							     json->'$.${sensorKey}[0]' as '${sensorKey}'
+						</foreach>
+					</when>
+					<otherwise>
+						<foreach collection="sensorKeys"
+								 item="sensorKey" separator="," close=",">
+							AVG(json->'$.${sensorKey}[0]') as '${sensorKey}'
+						</foreach>
+					</otherwise>
+				</choose>
+		     DATE_FORMAT(time,'${@com.moral.common.util.ReportTimeFormat@toMySqlTimeFormat(timePeriod.timeUnits)}') as format_time
+		     FROM
+			`history_minutely` hmi
+			<where>
+				and hmi.time >= #{timePeriod.startTime}
+				and hmi.time <![CDATA[<=]]> #{timePeriod.endTime}
+				<if test="dataCondition.actualTime != null">
+					and DATE_FORMAT(time,	'${@com.moral.common.util.ReportTimeFormat@toMySqlActualTimeFormat(dataCondition.timeUnits)}') = #{dataCondition.actualTime}
+				</if>
+				and hmi.mac in (
+				select mac from device dev
+				join monitor_point mpt  on dev.monitor_point_id = mpt.id
+				<where>
+					 <if test='"DEVICE"==dataCondition.areaRange.toString()'>
+						and dev.id = #{dataCondition.areaRangeId}
+					 </if>
+					<if test='"PROFESSION"==dataCondition.deviceDimension.toString()'>
+						and dev.profession_id = #{dataCondition.dimensionValue}
+					</if>
+					<if test='"MONITORPOINT"==dataCondition.areaRange.toString()'>
+						and mpt.id = #{dataCondition.areaRangeId}
+					</if>
+					<if test='"PROVINCE"==dataCondition.areaRange.toString()'>
+						and mpt.province_code = #{dataCondition.areaRangeId}
+					</if>
+					<if test='"CITY"==dataCondition.areaRange.toString()'>
+						and mpt.city_code = #{dataCondition.areaRangeId}
+					</if>
+					<if test='"AREA"==dataCondition.areaRange.toString()'>
+						and mpt.area_code = #{dataCondition.areaRangeId}
+					</if>
+				</where>
+				)
+			</where>
+			<if test="'MINUTE'!=dataCondition.timeUnits.toString() or 'DEVICE'!=dataCondition.areaRange.toString()">
+				GROUP BY format_time
+			</if>
+		    ORDER BY format_time asc
+	</select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0