SmartSubstationPlatform/riis-system/src/main/resources/mapper/patroltask/AlarmLogMapper.xml
2025-05-06 09:46:18 +08:00

99 lines
3.1 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.yfd.platform.modules.patroltask.mapper.AlarmLogMapper">
<!--静默监视查询-->
<select id="getAlarmListByType" resultType="java.util.Map">
SELECT
area_id,sp.patroldevice_name,sp.area_name,sp.place,a.*
FROM
(
SELECT
patroldevice_code,
monitor_type,
COUNT(*) count,
MAX(alarm_date) alarmDate
FROM
iis_alarm_log
WHERE
task_alarm_type = '2'
AND station_id = #{stationId}
<if test="areaId != null and areaId != ''">
AND area_id = #{areaId}
</if>
<if test="patrolDeviceName != null and patrolDeviceName != ''">
AND patroldevice_name LIKE concat('%',#{patrolDeviceName},'%')
</if>
<if test="monitorType != null and monitorType != ''">
AND monitor_type = #{monitorType}
</if>
GROUP BY
monitor_type,
patroldevice_code) a
LEFT JOIN iis_substation_patroldevice sp ON a.patroldevice_code= sp.patroldevice_code
</select>
<!--根据设备编号查询告警列表-->
<select id="getAlarmListPage" resultType="java.util.Map">
SELECT
patroldevice_code,
content,
alarm_date,
defect_file_path
FROM
iis_alarm_log
WHERE
task_alarm_type = '2'
<if test="patrolDeviceCode != null and patrolDeviceCode != ''">
AND patroldevice_code = #{patrolDeviceCode}
</if>
<if test="monitorType != null and monitorType != ''">
AND monitor_type = #{monitorType}
</if>
<if test="startDate != null and startDate != ''">
and str_to_date(alarm_date, '%Y-%m-%d %H:%i:%s') &gt;= #{startDate}
</if>
<if test="endDate != null and endDate != ''">
and str_to_date(alarm_date, '%Y-%m-%d %H:%i:%s') &lt;= #{endDate}
</if>
ORDER By alarm_date DESC
</select>
<select id="getConfirmationRate" resultType="java.util.Map">
SELECT
COUNT(*) AS total_alarms, -- 总告警数量
SUM(check_result = 1) AS confirmed_count, -- 属实的数量check_result=1
ROUND(
SUM(check_result = 1) / COUNT(*) * 100, -- 计算比率(分子/分母*100
3
) AS confirmation_rate,-- 比率保留2位小数
'%' AS unit
FROM
iis_alarm_log
WHERE 1=1
<if test="stationId != null and stationId != ''">
AND station_id = #{stationId}
</if>
</select>
<select id="getAlarmLogList" resultType="java.util.Map">
(
SELECT
record_id AS id,
station_id,
alarm_message AS content,
alarm_time AS alarm_date
FROM `fk_device_alarm_record`
)
UNION ALL
(
SELECT
id,
station_id,
content,
alarm_date
FROM iis_alarm_log
)
ORDER BY alarm_date DESC;
</select>
</mapper>