<?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.HistoryDailyMapper">
|
<select id="getEmissionsData" resultType="java.util.Map">
|
SELECT
|
SUM(hd.`json` ->'$.${sensorKey}[0]') AS '${sensorKey}',
|
vdi.mac,
|
mp.`name` 'name'
|
FROM
|
history_daily hd,
|
view_device_info vdi,
|
monitor_point mp
|
<where>
|
hd.mac = vdi.mac
|
AND vdi.monitor_point_id = mp.id
|
AND vdi.device_tech = 1
|
<if test="monitorPointId != null">
|
AND mp.id = #{monitorPointId}
|
</if>
|
<if test="mac != null">
|
AND hd.mac = #{mac}
|
</if>
|
<if test="start != null">
|
AND hd.time >= #{start}
|
</if>
|
<if test="end != null">
|
AND hd.time < #{end}
|
</if>
|
<if test="regionCode != null">
|
AND mp.${regionType}_code = #{regionCode}
|
</if>
|
<if test="orgIds != null and orgIds.size > 0">
|
AND mp.organization_id IN
|
<foreach collection="orgIds" open="(" separator="," close=")"
|
item="listItem">
|
#{listItem}
|
</foreach>
|
</if>
|
</where>
|
GROUP BY mp.`name`, vdi.mac
|
</select>
|
|
|
<select id="getOverproofData" resultType="java.util.Map">
|
SELECT
|
AVG( hd.`json` -> '$.${sensorKey}[0]' ) avg,
|
( SELECT DISTINCT limit_val ->> '$.${sensorKey}' FROM view_device_density WHERE monitor_point_id =
|
vdd.monitor_point_id AND device_tech = vdd.device_tech ) `limit`,
|
( SELECT mp.`name` FROM monitor_point mp WHERE mp.id = vdd.monitor_point_id ) `name`,
|
vdd.device_tech
|
FROM
|
history_daily hd,
|
view_device_density vdd,
|
(
|
SELECT
|
vdd.monitor_point_id
|
FROM
|
history_daily hd,
|
device vdd,
|
monitor_point mp
|
<where>
|
hd.mac = vdd.mac
|
AND mp.id = vdd.monitor_point_id
|
<if test="start != null">
|
AND hd.time >= #{start}
|
</if>
|
<if test="end != null">
|
AND hd.time < #{end}
|
</if>
|
<if test="regionCode != null">
|
AND mp.${regionType}_code = #{regionCode}
|
</if>
|
<if test="orgIds != null and orgIds.size > 0">
|
AND mp.organization_id IN
|
<foreach collection="orgIds" open="(" separator="," close=")"
|
item="listItem">
|
#{listItem}
|
</foreach>
|
</if>
|
</where>
|
GROUP BY
|
vdd.mac,
|
vdd.monitor_point_id
|
HAVING
|
AVG( hd.`json` -> '$.${sensorKey}[0]' ) >= ( SELECT limit_val ->> '$.${sensorKey}' FROM view_device_density
|
WHERE mac = vdd.mac ) * (1 + #{overproofRatio} * 1)
|
<if test="overproofRatio != 0 and overproofRatio != 3">
|
AND AVG( hd.`json` -> '$.${sensorKey}[0]' ) < ( SELECT limit_val ->> '$.${sensorKey}' FROM
|
view_device_density WHERE mac = vdd.mac ) * (2 + #{overproofRatio} * 1)
|
</if>
|
) ta
|
<where>
|
hd.mac = vdd.mac
|
AND vdd.monitor_point_id = ta.monitor_point_id
|
<if test="start != null">
|
AND hd.time >= #{start}
|
</if>
|
<if test="end != null">
|
AND hd.time < #{end}
|
</if>
|
</where>
|
GROUP BY
|
vdd.monitor_point_id,
|
vdd.device_tech
|
</select>
|
|
<!-- 根据设备mac地址,时间,污染因子查询一天的平均值 -->
|
<select id="getTraceabilityData" resultType="java.util.Map">
|
SELECT
|
json ->'$.${sensorKey}[0]' AS '${sensorKey}'
|
FROM
|
history_daily
|
<where>
|
<if test="mac!=null">
|
AND mac=#{mac}
|
</if>
|
<if test="time!=null">
|
AND time=#{time}
|
</if>
|
</where>
|
</select>
|
|
<!-- 根据设备mac地址,时间,污染因子查询一天的平均值 -->
|
<select id="getDataByTimeSlot" resultType="java.util.Map">
|
SELECT *
|
FROM history_daily
|
where mac=#{mac}
|
AND time between #{startTime} and #{endTime}
|
</select>
|
</mapper>
|