gangkou/RuoYi-Vue-Oracle/src/main/resources/mybatis/oil/ThDeviceReportMapper.xml

275 lines
14 KiB
XML
Raw Normal View History

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 != ''">
2024-12-04 17:22:36 +08:00
AND TRUNC(d.REPORT_TIME)>= TO_DATE(#{params.beginTime}, 'YYYY-MM-DD HH24:MI:SS')
2024-09-03 22:09:21 +08:00
</if>
<if test="params.endTime != null and params.endTime != ''">
2024-12-04 17:22:36 +08:00
AND TRUNC(d.REPORT_TIME)&lt;= TO_DATE(#{params.endTime}, 'YYYY-MM-DD HH24:MI:SS')
2024-09-03 22:09:21 +08:00
</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">
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))
2024-12-04 17:22:36 +08:00
AND TRUNC(d.REPORT_TIME) &gt;= TO_DATE(#{startMonth}, 'YYYY-MM')
AND TRUNC(d.REPORT_TIME)&lt;= 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,
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
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})
2024-12-04 17:22:36 +08:00
AND TRUNC(d.REPORT_TIME) &gt;= TO_DATE(#{startMonth}, 'YYYY-MM')
AND TRUNC(d.REPORT_TIME)&lt;= 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,
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
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">
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>
<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="monthReportDataOverviewGangQuCompare" parameterType="map" resultType="map">
SELECT
pp.dept_name as "gang_qu",
ppp.dept_name as "gang_kou",
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
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 pp.dept_name, ppp.dept_name
ORDER BY ppp.dept_name, pp.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>
<!-- 选择日期范围内 某个部门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))
2024-12-04 17:22:36 +08:00
AND TRUNC(d.REPORT_TIME) &gt;= TO_DATE(#{beginDate}, 'YYYY-MM-DD')
AND TRUNC(d.REPORT_TIME) &lt;= 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))
2024-12-04 17:22:36 +08:00
AND TRUNC(d.REPORT_TIME) &gt;= TO_DATE(#{beginDate}, 'YYYY-MM-DD')
AND TRUNC(d.REPORT_TIME) &lt;= 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>
<!-- 选择 某年year每个deptId下的所有设备的每个月的报警次数(d.zt = '一级报警' OR d.zt = '二级报警') -->
<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 (d.zt = '一级报警' OR d.zt = '二级报警') THEN 1 ELSE 0 END) AS month1,
SUM(CASE WHEN TO_CHAR(d.report_time, 'MM') = '02' AND (d.zt = '一级报警' OR d.zt = '二级报警') THEN 1 ELSE 0 END) AS month2,
SUM(CASE WHEN TO_CHAR(d.report_time, 'MM') = '03' AND (d.zt = '一级报警' OR d.zt = '二级报警') THEN 1 ELSE 0 END) AS month3,
SUM(CASE WHEN TO_CHAR(d.report_time, 'MM') = '04' AND (d.zt = '一级报警' OR d.zt = '二级报警') THEN 1 ELSE 0 END) AS month4,
SUM(CASE WHEN TO_CHAR(d.report_time, 'MM') = '05' AND (d.zt = '一级报警' OR d.zt = '二级报警') THEN 1 ELSE 0 END) AS month5,
SUM(CASE WHEN TO_CHAR(d.report_time, 'MM') = '06' AND (d.zt = '一级报警' OR d.zt = '二级报警') THEN 1 ELSE 0 END) AS month6,
SUM(CASE WHEN TO_CHAR(d.report_time, 'MM') = '07' AND (d.zt = '一级报警' OR d.zt = '二级报警') THEN 1 ELSE 0 END) AS month7,
SUM(CASE WHEN TO_CHAR(d.report_time, 'MM') = '08' AND (d.zt = '一级报警' OR d.zt = '二级报警') THEN 1 ELSE 0 END) AS month8,
SUM(CASE WHEN TO_CHAR(d.report_time, 'MM') = '09' AND (d.zt = '一级报警' OR d.zt = '二级报警') THEN 1 ELSE 0 END) AS month9,
SUM(CASE WHEN TO_CHAR(d.report_time, 'MM') = '10' AND (d.zt = '一级报警' OR d.zt = '二级报警') THEN 1 ELSE 0 END) AS month10,
SUM(CASE WHEN TO_CHAR(d.report_time, 'MM') = '11' AND (d.zt = '一级报警' OR d.zt = '二级报警') THEN 1 ELSE 0 END) AS month11,
SUM(CASE WHEN TO_CHAR(d.report_time, 'MM') = '12' AND (d.zt = '一级报警' OR d.zt = '二级报警') 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.create_time, 'yyyy') = #{year}
)
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>