2024-09-03 22:09:21 +08:00
<?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.ruoyi.project.oil.mapper.ThDeviceReportMapper" >
<resultMap id= "BaseResultMap" type= "com.ruoyi.project.oil.domain.monitor.ThDeviceReport" >
2024-09-03 22:41:34 +08:00
<id property= "id" column= "id" jdbcType= "BIGINT" />
<result property= "sn" column= "sn" jdbcType= "VARCHAR" />
<result property= "reportTime" column= "report_time" jdbcType= "TIMESTAMP" />
2024-10-16 22:06:17 +08:00
<result property= "dw" column= "dw" jdbcType= "VARCHAR" />
<result property= "jcjd" column= "JCJD" jdbcType= "INTEGER" />
2024-09-03 22:41:34 +08:00
<result property= "ds" column= "ds" jdbcType= "VARCHAR" />
<result property= "dbz" column= "dbz" jdbcType= "VARCHAR" />
<result property= "gbz" column= "gbz" jdbcType= "VARCHAR" />
2024-09-03 22:09:21 +08:00
</resultMap>
<sql id= "Base_Column_List" >
2024-09-03 22:41:34 +08:00
SELECT d.id,
d.sn,
d.report_time,
2024-10-16 22:06:17 +08:00
d.SBZT,
d.lc,
d.dw,
d.zt,
2024-09-03 22:41:34 +08:00
d.ds,
d.dbz,
d.gbz
FROM th_device_report d
2024-09-03 22:09:21 +08:00
</sql>
<select id= "selectDeviceReport" parameterType= "com.ruoyi.project.oil.domain.monitor.ThDeviceReport" resultMap= "BaseResultMap" >
<include refid= "Base_Column_List" />
WHERE 1=1
<if test= "sn != null and sn != ''" >
AND d.sn = #{sn}
</if>
<if test= "params.beginTime != null and params.beginTime != ''" >
AND d.report_time > = TO_DATE(#{params.beginTime}, 'YYYY-MM-DD HH24:MI:SS')
</if>
<if test= "params.endTime != null and params.endTime != ''" >
AND d.report_time < = TO_DATE(#{params.endTime}, 'YYYY-MM-DD HH24:MI:SS')
</if>
ORDER BY d.report_time ASC
</select>
2024-09-03 22:41:34 +08:00
2024-09-03 22:09:21 +08:00
<select id= "selectAvgDsByMonth" parameterType= "map" resultType= "map" >
2024-09-04 23:15:56 +08:00
SELECT TO_CHAR(d.report_time, 'YYYY-MM') AS month,
ROUND(AVG(TO_NUMBER(d.ds)), 8) AS avg_ds
FROM th_device_report d
WHERE d.sn IN (SELECT d.sn
FROM th_device d
LEFT JOIN sys_dept p ON d.dept_id = p.dept_id
WHERE d.dept_id IN (SELECT dept_id
FROM sys_dept START WITH dept_id = #{deptId}
CONNECT BY PRIOR dept_id = parent_id))
AND d.report_time > = TO_DATE(#{startMonth}, 'YYYY-MM')
AND d.report_time < = ADD_MONTHS(TO_DATE(#{endMonth}, 'YYYY-MM'), 1)
GROUP BY TO_CHAR(d.report_time, 'YYYY-MM')
ORDER BY month
2024-09-03 22:09:21 +08:00
</select>
2024-09-03 22:41:34 +08:00
<select id= "selectDeviceAvgByMonth" parameterType= "map" resultType= "map" >
SELECT d.sn,
2024-09-04 23:15:56 +08:00
td.name,
td.address,
td.longitude,
td.latitude,
p.dept_name,
ROUND(AVG(TO_NUMBER(d.ds)), 8) AS avg_ds,
ROUND(AVG(TO_NUMBER(d.dbz)), 8) AS avg_dbz,
ROUND(AVG(TO_NUMBER(d.gbz)), 8) AS avg_gbz
2024-09-03 22:41:34 +08:00
FROM th_device_report d
2024-09-04 23:15:56 +08:00
LEFT JOIN th_device td ON d.sn = td.sn
LEFT JOIN sys_dept p ON td.dept_id = p.dept_id
WHERE td.dept_id IN (SELECT dept_id FROM sys_dept WHERE dept_id = #{deptId} OR parent_id = #{deptId})
AND d.report_time > = TO_DATE(#{startMonth}, 'YYYY-MM')
AND d.report_time < = ADD_MONTHS(TO_DATE(#{endMonth}, 'YYYY-MM'), 1)
2024-09-03 22:41:34 +08:00
GROUP BY d.sn, p.dept_name, td.name, td.address, td.longitude, td.latitude
ORDER BY p.dept_name
</select>
<select id= "selectDeptAvgByMonth" parameterType= "map" resultType= "map" >
SELECT p.dept_name,
2024-09-04 23:15:56 +08:00
ROUND(AVG(TO_NUMBER(d.ds)), 8) AS avg_ds,
ROUND(AVG(TO_NUMBER(d.dbz)), 8) AS avg_dbz,
ROUND(AVG(TO_NUMBER(d.gbz)), 8) AS avg_gbz
2024-09-03 22:41:34 +08:00
FROM th_device_report d
2024-09-04 23:15:56 +08:00
LEFT JOIN th_device td ON d.sn = td.sn
LEFT JOIN sys_dept p ON td.dept_id = p.dept_id
WHERE td.dept_id IN
(SELECT dept_id FROM sys_dept WHERE dept_id = #{deptId} OR parent_id = #{deptId})
AND TO_CHAR(d.report_time, 'YYYY-MM') = #{month}
2024-09-03 22:41:34 +08:00
GROUP BY p.dept_name
ORDER BY p.dept_name
</select>
<select id= "selectAllAvgByMonth" parameterType= "map" resultType= "map" >
2024-09-04 23:15:56 +08:00
SELECT TO_CHAR(d.report_time, 'YYYY-MM') AS month,
ROUND(AVG(TO_NUMBER(d.ds)), 8) AS avg_ds,
ROUND(AVG(TO_NUMBER(d.dbz)), 8) AS avg_dbz,
ROUND(AVG(TO_NUMBER(d.gbz)), 8) AS avg_gbz
FROM th_device_report d
WHERE d.sn IN (SELECT td.sn
FROM th_device td
LEFT JOIN sys_dept p ON td.dept_id = p.dept_id
WHERE td.dept_id IN (SELECT dept_id FROM sys_dept WHERE dept_id = #{deptId} OR parent_id = #{deptId}))
AND TO_CHAR(d.report_time, 'YYYY-MM') = #{month}
GROUP BY TO_CHAR(d.report_time, 'YYYY-MM')
2024-09-03 22:41:34 +08:00
</select>
2024-09-12 16:50:29 +08:00
<select id= "monthReportDataOverview" parameterType= "map" resultType= "map" >
SELECT TO_CHAR(d.report_time, 'YYYY-MM') AS month,
ROUND(AVG(TO_NUMBER(d.ds)), 8) AS avg_ds,
ROUND(AVG(TO_NUMBER(d.dbz)), 8) AS avg_dbz,
ROUND(AVG(TO_NUMBER(d.gbz)), 8) AS avg_gbz
FROM th_device_report d
WHERE d.sn IN (SELECT d.sn
FROM th_device d
LEFT JOIN sys_dept p ON d.dept_id = p.dept_id
WHERE d.dept_id IN (SELECT dept_id
FROM sys_dept START WITH dept_id = #{deptId}
CONNECT BY PRIOR dept_id = parent_id))
AND TO_CHAR(d.report_time, 'YYYY-MM') = #{month}
GROUP BY TO_CHAR(d.report_time, 'YYYY-MM')
</select>
<select id= "monthReportDataOverviewDeviceDs" parameterType= "map" resultType= "map" >
SELECT d.sn,
p.dept_name,
pp.dept_name as "gang_qu",
ROUND(AVG(TO_NUMBER(d.ds)), 8) AS avg_ds
FROM th_device_report d
LEFT JOIN th_device td ON d.sn = td.sn
LEFT JOIN sys_dept p ON td.dept_id = p.dept_id
LEFT JOIN sys_dept pp ON p.parent_id = pp.dept_id
WHERE d.sn IN (SELECT d.sn
FROM th_device d
LEFT JOIN sys_dept p ON d.dept_id = p.dept_id
WHERE d.dept_id IN (SELECT dept_id
FROM sys_dept START WITH dept_id = #{deptId}
CONNECT BY PRIOR dept_id = parent_id))
AND TO_CHAR(d.report_time, 'YYYY-MM') = #{month}
GROUP BY d.sn, p.dept_name, pp.dept_name
ORDER BY pp.dept_name, p.dept_name
</select>
2024-09-13 19:20:40 +08:00
<select id= "dailyReportDataOverview" parameterType= "map" resultType= "map" >
SELECT TO_CHAR(d.report_time, 'YYYY-MM-DD') AS day,
d.sn,
p.dept_name as "p",
pp.dept_name as "pp",
ppp.dept_name as "ppp",
ROUND(AVG(TO_NUMBER(d.ds)), 8) AS avg_ds
FROM th_device_report d
LEFT JOIN th_device td ON d.sn = td.sn
LEFT JOIN sys_dept p ON td.dept_id = p.dept_id
LEFT JOIN sys_dept pp ON p.parent_id = pp.dept_id
LEFT JOIN sys_dept ppp ON pp.parent_id = ppp.dept_id
WHERE d.sn IN (SELECT d.sn FROM th_device d)
AND TO_CHAR(d.report_time, 'YYYY-MM-DD') = #{day}
GROUP BY TO_CHAR(d.report_time, 'YYYY-MM-DD'), ppp.dept_name, pp.dept_name, p.dept_name, d.sn
ORDER BY ppp.dept_name, pp.dept_name, p.dept_name
</select>
2024-10-11 21:16:39 +08:00
<!-- 选择日期范围内 某个部门id下的所有子部门的所有设备的报警每日数量; 统计(d.zt = '一级报警' OR d.zt = '二级报警')的alarm_count, 统计当天全部的数量count -->
<select id= "selectAlarmCountByDeptIdAndDateRange" parameterType= "map" resultType= "map" >
SELECT TO_CHAR(d.report_time, 'YYYY-MM-DD') AS day,
COUNT(CASE WHEN d.zt = '一级报警' OR d.zt = '二级报警' THEN 1 END) AS alarm_count,
COUNT(1) AS count
FROM th_device_report d
LEFT JOIN th_device td ON d.sn = td.sn
LEFT JOIN sys_dept p ON td.dept_id = p.dept_id
WHERE d.sn IN (SELECT d.sn
FROM th_device d
LEFT JOIN sys_dept p ON d.dept_id = p.dept_id
WHERE d.dept_id IN (SELECT dept_id
FROM sys_dept START WITH dept_id = #{deptId}
CONNECT BY PRIOR dept_id = parent_id))
AND d.report_time > = TO_DATE(#{beginDate}, 'YYYY-MM-DD')
AND d.report_time < = TO_DATE(#{endDate}, 'YYYY-MM-DD')
GROUP BY TO_CHAR(d.report_time, 'YYYY-MM-DD')
ORDER BY day
</select>
<!-- 选择日期范围内 某个部门id下的所有子部门的所有设备的报警数量 降序排列 -->
<select id= "selectAlarmCountByDeptIdAndDateRangeDesc" parameterType= "map" resultType= "map" >
SELECT d.sn,
COUNT(d.id) AS count,
p.dept_name as "p",
pp.dept_name as "pp",
ppp.dept_name as "ppp",
td.address,
td.name,
d.zt
FROM th_device_report d
LEFT JOIN th_device td ON d.sn = td.sn
LEFT JOIN sys_dept p ON td.dept_id = p.dept_id
LEFT JOIN sys_dept pp ON p.parent_id = pp.dept_id
LEFT JOIN sys_dept ppp ON pp.parent_id = ppp.dept_id
WHERE d.sn IN (SELECT d.sn
FROM th_device d
LEFT JOIN sys_dept p ON d.dept_id = p.dept_id
WHERE d.dept_id IN (SELECT dept_id
FROM sys_dept START WITH dept_id = #{deptId}
CONNECT BY PRIOR dept_id = parent_id))
AND d.report_time > = TO_DATE(#{beginDate}, 'YYYY-MM-DD')
AND d.report_time < = TO_DATE(#{endDate}, 'YYYY-MM-DD')
AND (d.zt = '一级报警' OR d.zt = '二级报警')
GROUP BY d.sn, p.dept_name, pp.dept_name, ppp.dept_name, td.address, td.name, d.zt
ORDER BY count DESC
</select>
2024-10-29 17:01:04 +08:00
<!-- 选择 某年year, 每个deptId下的所有设备的每个月的超限次数(ds不在dbz和gbz范围内的行) -->
<select id= "selectOverLimitCountByYearAndDeptId" parameterType= "map" resultType= "map" >
SELECT d.sn,
td.address,
p.dept_name as "p",
pp.dept_name as "pp",
ppp.dept_name as "ppp",
SUM(CASE WHEN TO_CHAR(d.report_time, 'MM') = '01' AND (TO_NUMBER(d.ds) > TO_NUMBER(d.gbz) OR TO_NUMBER(d.ds) < TO_NUMBER(d.dbz)) THEN 1 ELSE 0 END) AS month1,
SUM(CASE WHEN TO_CHAR(d.report_time, 'MM') = '02' AND (TO_NUMBER(d.ds) > TO_NUMBER(d.gbz) OR TO_NUMBER(d.ds) < TO_NUMBER(d.dbz)) THEN 1 ELSE 0 END) AS month2,
SUM(CASE WHEN TO_CHAR(d.report_time, 'MM') = '03' AND (TO_NUMBER(d.ds) > TO_NUMBER(d.gbz) OR TO_NUMBER(d.ds) < TO_NUMBER(d.dbz)) THEN 1 ELSE 0 END) AS month3,
SUM(CASE WHEN TO_CHAR(d.report_time, 'MM') = '04' AND (TO_NUMBER(d.ds) > TO_NUMBER(d.gbz) OR TO_NUMBER(d.ds) < TO_NUMBER(d.dbz)) THEN 1 ELSE 0 END) AS month4,
SUM(CASE WHEN TO_CHAR(d.report_time, 'MM') = '05' AND (TO_NUMBER(d.ds) > TO_NUMBER(d.gbz) OR TO_NUMBER(d.ds) < TO_NUMBER(d.dbz)) THEN 1 ELSE 0 END) AS month5,
SUM(CASE WHEN TO_CHAR(d.report_time, 'MM') = '06' AND (TO_NUMBER(d.ds) > TO_NUMBER(d.gbz) OR TO_NUMBER(d.ds) < TO_NUMBER(d.dbz)) THEN 1 ELSE 0 END) AS month6,
SUM(CASE WHEN TO_CHAR(d.report_time, 'MM') = '07' AND (TO_NUMBER(d.ds) > TO_NUMBER(d.gbz) OR TO_NUMBER(d.ds) < TO_NUMBER(d.dbz)) THEN 1 ELSE 0 END) AS month7,
SUM(CASE WHEN TO_CHAR(d.report_time, 'MM') = '08' AND (TO_NUMBER(d.ds) > TO_NUMBER(d.gbz) OR TO_NUMBER(d.ds) < TO_NUMBER(d.dbz)) THEN 1 ELSE 0 END) AS month8,
SUM(CASE WHEN TO_CHAR(d.report_time, 'MM') = '09' AND (TO_NUMBER(d.ds) > TO_NUMBER(d.gbz) OR TO_NUMBER(d.ds) < TO_NUMBER(d.dbz)) THEN 1 ELSE 0 END) AS month9,
SUM(CASE WHEN TO_CHAR(d.report_time, 'MM') = '10' AND (TO_NUMBER(d.ds) > TO_NUMBER(d.gbz) OR TO_NUMBER(d.ds) < TO_NUMBER(d.dbz)) THEN 1 ELSE 0 END) AS month10,
SUM(CASE WHEN TO_CHAR(d.report_time, 'MM') = '11' AND (TO_NUMBER(d.ds) > TO_NUMBER(d.gbz) OR TO_NUMBER(d.ds) < TO_NUMBER(d.dbz)) THEN 1 ELSE 0 END) AS month11,
SUM(CASE WHEN TO_CHAR(d.report_time, 'MM') = '12' AND (TO_NUMBER(d.ds) > TO_NUMBER(d.gbz) OR TO_NUMBER(d.ds) < TO_NUMBER(d.dbz)) THEN 1 ELSE 0 END) AS month12
FROM th_device_report d
LEFT JOIN th_device td ON d.sn = td.sn
LEFT JOIN sys_dept p ON td.dept_id = p.dept_id
LEFT JOIN sys_dept pp ON p.parent_id = pp.dept_id
LEFT JOIN sys_dept ppp ON pp.parent_id = ppp.dept_id
WHERE d.sn IN (SELECT d.sn
FROM th_device d
LEFT JOIN sys_dept p ON d.dept_id = p.dept_id
WHERE d.dept_id IN (SELECT dept_id
FROM sys_dept START WITH dept_id = #{deptId}
CONNECT BY PRIOR dept_id = parent_id))
AND TO_CHAR(d.report_time, 'YYYY') = #{year}
GROUP BY d.sn, td.address, p.dept_name, pp.dept_name, ppp.dept_name
ORDER BY p.dept_name, pp.dept_name, ppp.dept_name, d.sn
</select>
2024-09-03 22:09:21 +08:00
</mapper>