| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- <?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.jeesite.modules.mes.dao.MesAdw300DataDao">
- <select id="findDeviceSnList" resultType="String">
- SELECT DISTINCT device_sn
- FROM mes_adw300_data
- WHERE status = '0'
- AND device_sn IS NOT NULL
- AND device_sn != ''
- ORDER BY device_sn
- </select>
- <select id="countByDeviceAndReportTimeRange" resultType="Long">
- SELECT COUNT(1)
- FROM mes_adw300_data
- WHERE status = '0'
- AND device_sn = #{deviceSn}
- AND report_time >= #{startTime}
- AND report_time < #{endTime}
- </select>
- <select id="findLatestSnapshot" resultType="java.util.Map">
- SELECT
- a.device_sn AS deviceSn,
- a.report_time AS reportTime,
- DATE_FORMAT(a.report_time, '%Y-%m-%d %H:%i:%s') AS reportTimeText,
- a.topic AS topic,
- a.point_id AS pointId,
- a.point_name AS pointName,
- a.point_value AS pointValue,
- a.unit AS unit
- FROM mes_adw300_data a
- INNER JOIN (
- SELECT device_sn, MAX(report_time) AS report_time
- FROM mes_adw300_data
- WHERE status = '0'
- AND device_sn IS NOT NULL
- AND device_sn != ''
- GROUP BY device_sn
- ) b ON a.device_sn = b.device_sn AND a.report_time = b.report_time
- WHERE a.status = '0'
- ORDER BY a.device_sn, a.point_id
- </select>
- <select id="findTodayEnergy" resultType="java.util.Map">
- SELECT
- first_t.device_sn AS deviceSn,
- ROUND(CAST(last_t.point_value AS DECIMAL(18, 4)) - CAST(first_t.point_value AS DECIMAL(18, 4)), 3) AS energy
- FROM mes_adw300_data first_t
- INNER JOIN (
- SELECT device_sn, MIN(report_time) AS report_time
- FROM mes_adw300_data
- WHERE status = '0'
- AND point_id = 28
- AND report_time >= #{startTime}
- AND report_time < #{endTime}
- AND point_value REGEXP '^-?[0-9]+(\\.[0-9]+)?$'
- GROUP BY device_sn
- ) first_x ON first_x.device_sn = first_t.device_sn AND first_x.report_time = first_t.report_time
- INNER JOIN (
- SELECT device_sn, MAX(report_time) AS report_time
- FROM mes_adw300_data
- WHERE status = '0'
- AND point_id = 28
- AND report_time >= #{startTime}
- AND report_time < #{endTime}
- AND point_value REGEXP '^-?[0-9]+(\\.[0-9]+)?$'
- GROUP BY device_sn
- ) last_x ON last_x.device_sn = first_t.device_sn
- INNER JOIN mes_adw300_data last_t
- ON last_t.device_sn = last_x.device_sn
- AND last_t.report_time = last_x.report_time
- AND last_t.point_id = 28
- WHERE first_t.status = '0'
- AND first_t.point_id = 28
- AND first_t.point_value REGEXP '^-?[0-9]+(\\.[0-9]+)?$'
- </select>
- <select id="findHourlyEnergy" resultType="java.util.Map">
- SELECT
- last_t.device_sn AS deviceSn,
- DATE_FORMAT(last_t.report_time, '%H:00') AS hourLabel,
- ROUND(GREATEST(CAST(last_t.point_value AS DECIMAL(18, 4)) - CAST(first_t.point_value AS DECIMAL(18, 4)), 0), 3) AS energy
- FROM mes_adw300_data last_t
- INNER JOIN (
- SELECT device_sn, DATE_FORMAT(report_time, '%H:00') AS hour_label, MAX(report_time) AS report_time
- FROM mes_adw300_data
- WHERE status = '0'
- AND point_id = 28
- AND report_time >= #{startTime}
- AND report_time < #{endTime}
- AND point_value REGEXP '^-?[0-9]+(\\.[0-9]+)?$'
- GROUP BY device_sn, DATE_FORMAT(report_time, '%H:00')
- ) last_x ON last_x.device_sn = last_t.device_sn AND last_x.report_time = last_t.report_time
- INNER JOIN (
- SELECT device_sn, MIN(report_time) AS report_time
- FROM mes_adw300_data
- WHERE status = '0'
- AND point_id = 28
- AND report_time >= #{startTime}
- AND report_time < #{endTime}
- AND point_value REGEXP '^-?[0-9]+(\\.[0-9]+)?$'
- GROUP BY device_sn
- ) first_x ON first_x.device_sn = last_t.device_sn
- INNER JOIN mes_adw300_data first_t
- ON first_t.device_sn = first_x.device_sn
- AND first_t.report_time = first_x.report_time
- AND first_t.point_id = 28
- WHERE last_t.status = '0'
- AND last_t.point_id = 28
- AND last_t.point_value REGEXP '^-?[0-9]+(\\.[0-9]+)?$'
- AND first_t.status = '0'
- AND first_t.point_value REGEXP '^-?[0-9]+(\\.[0-9]+)?$'
- ORDER BY hourLabel, deviceSn
- </select>
- <select id="findDailyEnergy" resultType="java.util.Map">
- SELECT
- first_t.device_sn AS deviceSn,
- DATE_FORMAT(first_x.day_start, '%m-%d') AS dayLabel,
- ROUND(GREATEST(CAST(last_t.point_value AS DECIMAL(18, 4)) - CAST(first_t.point_value AS DECIMAL(18, 4)), 0), 3) AS energy
- FROM mes_adw300_data first_t
- INNER JOIN (
- SELECT
- device_sn,
- DATE_FORMAT(report_time, '%Y-%m-%d') AS day_start,
- MIN(report_time) AS report_time
- FROM mes_adw300_data
- WHERE status = '0'
- AND point_id = 28
- AND report_time >= #{startTime}
- AND report_time < #{endTime}
- AND point_value REGEXP '^-?[0-9]+(\\.[0-9]+)?$'
- GROUP BY device_sn, DATE_FORMAT(report_time, '%Y-%m-%d')
- ) first_x ON first_x.device_sn = first_t.device_sn AND first_x.report_time = first_t.report_time
- INNER JOIN (
- SELECT
- device_sn,
- DATE_FORMAT(report_time, '%Y-%m-%d') AS day_start,
- MAX(report_time) AS report_time
- FROM mes_adw300_data
- WHERE status = '0'
- AND point_id = 28
- AND report_time >= #{startTime}
- AND report_time < #{endTime}
- AND point_value REGEXP '^-?[0-9]+(\\.[0-9]+)?$'
- GROUP BY device_sn, DATE_FORMAT(report_time, '%Y-%m-%d')
- ) last_x ON last_x.device_sn = first_t.device_sn AND last_x.day_start = first_x.day_start
- INNER JOIN mes_adw300_data last_t
- ON last_t.device_sn = last_x.device_sn
- AND last_t.report_time = last_x.report_time
- AND last_t.point_id = 28
- WHERE first_t.status = '0'
- AND first_t.point_id = 28
- AND first_t.point_value REGEXP '^-?[0-9]+(\\.[0-9]+)?$'
- AND last_t.status = '0'
- AND last_t.point_value REGEXP '^-?[0-9]+(\\.[0-9]+)?$'
- ORDER BY dayLabel, deviceSn
- </select>
- <!-- 查询数据
- <select id="findList" resultType="MesAdw300Data">
- SELECT ${sqlMap.column.toSql()}
- FROM ${sqlMap.table.toSql()}
- <where>
- ${sqlMap.where.toSql()}
- </where>
- ORDER BY ${sqlMap.order.toSql()}
- </select> -->
- <select id="findTodayEnergyByPower" resultType="java.util.Map">
- SELECT
- deviceSn,
- ROUND(SUM(energy), 3) AS energy
- FROM (
- SELECT
- t.device_sn AS deviceSn,
- ABS(CAST(t.point_value AS DECIMAL(18, 4))) *
- LEAST(IFNULL(TIMESTAMPDIFF(SECOND, t.report_time, next_t.next_time), 0), 600) / 3600 AS energy
- FROM mes_adw300_data t
- LEFT JOIN (
- SELECT
- a.id,
- MIN(b.report_time) AS next_time
- FROM mes_adw300_data a
- INNER JOIN mes_adw300_data b
- ON b.status = '0'
- AND b.device_sn = a.device_sn
- AND b.point_id = a.point_id
- AND b.report_time > a.report_time
- WHERE a.status = '0'
- AND a.point_id = 13
- AND a.report_time >= #{startTime}
- AND a.report_time < #{endTime}
- GROUP BY a.id
- ) next_t ON next_t.id = t.id
- WHERE t.status = '0'
- AND t.point_id = 13
- AND t.report_time >= #{startTime}
- AND t.report_time < #{endTime}
- AND t.point_value REGEXP '^-?[0-9]+(\\.[0-9]+)?$'
- ) x
- GROUP BY deviceSn
- </select>
- <select id="findHourlyEnergyByPower" resultType="java.util.Map">
- SELECT
- deviceSn,
- hourLabel,
- ROUND(SUM(energy), 3) AS energy
- FROM (
- SELECT
- t.device_sn AS deviceSn,
- DATE_FORMAT(t.report_time, '%H:00') AS hourLabel,
- ABS(CAST(t.point_value AS DECIMAL(18, 4))) *
- LEAST(IFNULL(TIMESTAMPDIFF(SECOND, t.report_time, next_t.next_time), 0), 600) / 3600 AS energy
- FROM mes_adw300_data t
- LEFT JOIN (
- SELECT
- a.id,
- MIN(b.report_time) AS next_time
- FROM mes_adw300_data a
- INNER JOIN mes_adw300_data b
- ON b.status = '0'
- AND b.device_sn = a.device_sn
- AND b.point_id = a.point_id
- AND b.report_time > a.report_time
- WHERE a.status = '0'
- AND a.point_id = 13
- AND a.report_time >= #{startTime}
- AND a.report_time < #{endTime}
- GROUP BY a.id
- ) next_t ON next_t.id = t.id
- WHERE t.status = '0'
- AND t.point_id = 13
- AND t.report_time >= #{startTime}
- AND t.report_time < #{endTime}
- AND t.point_value REGEXP '^-?[0-9]+(\\.[0-9]+)?$'
- ) x
- GROUP BY deviceSn, hourLabel
- ORDER BY hourLabel, deviceSn
- </select>
- </mapper>
|