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

275 lines
14 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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">
<id property="id" column="id" jdbcType="BIGINT"/>
<result property="sn" column="sn" jdbcType="VARCHAR"/>
<result property="reportTime" column="report_time" jdbcType="TIMESTAMP"/>
<result property="dw" column="dw" jdbcType="VARCHAR"/>
<result property="jcjd" column="JCJD" jdbcType="INTEGER"/>
<result property="ds" column="ds" jdbcType="VARCHAR"/>
<result property="dbz" column="dbz" jdbcType="VARCHAR"/>
<result property="gbz" column="gbz" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
SELECT d.id,
d.sn,
d.report_time,
d.SBZT,
d.lc,
d.dw,
d.zt,
d.ds,
d.dbz,
d.gbz
FROM th_device_report d
</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 TRUNC(d.REPORT_TIME)>= TO_DATE(#{params.beginTime}, 'YYYY-MM-DD HH24:MI:SS')
</if>
<if test="params.endTime != null and params.endTime != ''">
AND TRUNC(d.REPORT_TIME)&lt;= TO_DATE(#{params.endTime}, 'YYYY-MM-DD HH24:MI:SS')
</if>
ORDER BY d.report_time DESC
</select>
<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))
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
</select>
<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
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 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 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
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}
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')
</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",
d.avg_value AS avg_ds
FROM th_device_report_month1 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(TO_DATE(d.year || '-' || d.month, 'YYYY-MM'), 'YYYY-MM') = #{month}
ORDER BY pp.dept_name, p.dept_name
</select>
<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.avg_value)), 2) AS avg_ds
FROM th_device_report_month1 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(TO_DATE(d.year || '-' || d.month, 'YYYY-MM'), 'YYYY-MM') = #{month}
GROUP BY pp.dept_name, ppp.dept_name
ORDER BY ppp.dept_name, pp.dept_name
</select>
<select id="dailyReportDataOverview" parameterType="map" resultType="map">
SELECT TO_CHAR(d.report_time, 'YYYY-MM-DD') AS day,
d.sn,
td.name,
p.dept_name as "p",
pp.dept_name as "pp",
ppp.dept_name as "ppp",
ppp.dept_id as "ppp_id",
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, ppp.dept_id, td.name
ORDER BY ppp.dept_id ASC
</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))
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))
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>
</mapper>