275 lines
14 KiB
XML
275 lines
14 KiB
XML
<?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)<= 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) >= TO_DATE(#{startMonth}, 'YYYY-MM')
|
||
AND TRUNC(d.REPORT_TIME)<= 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) >= TO_DATE(#{startMonth}, 'YYYY-MM')
|
||
AND TRUNC(d.REPORT_TIME)<= 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) >= TO_DATE(#{beginDate}, 'YYYY-MM-DD')
|
||
AND TRUNC(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 TRUNC(d.REPORT_TIME) >= TO_DATE(#{beginDate}, 'YYYY-MM-DD')
|
||
AND TRUNC(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>
|
||
|
||
|
||
<!-- 选择 某年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>
|