liurunyu
2024-10-31 97c30cdf60ebd8b702bb73c62c59b512e998677a
pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml
@@ -438,44 +438,45 @@
    <!--获取取水口列表(在线和不在先)-->
    <select id="getOnLineIntakes" resultType="com.dy.pipIrrGlobal.voPr.VoOnLineIntake">
        SELECT inta.id                     AS intakeId,
        con.rtuAddr,
        inta.name                   AS intakeNum,
        inta.lng,
        inta.lat,
        IFNULL(hou.total_amount, 0) AS totalAmount,
        (CASE
        WHEN con.rtuAddr IS NULL THEN false
        WHEN con.rtuAddr IS NOT NULL THEN true
        END)                    AS isBinded,
        rtus.isOnLine,
        alarm.alarm
        SELECT
            inta.id AS intakeId,
            con.rtuAddr,
            inta.name AS intakeNum,
            inta.lng,
            inta.lat,
            IFNULL(hou.total_amount, 0) AS totalAmount,
            (CASE
                WHEN con.rtuAddr IS NULL THEN false
                WHEN con.rtuAddr IS NOT NULL THEN true
            END) AS isBinded,
            rtus.isOnLine,
            alarm.alarm
        FROM pr_intake inta
        LEFT JOIN pr_controller con ON con.intakeId = inta.id
        LEFT JOIN rm_on_hour_report_last hou ON hou.intake_id = inta.id
        LEFT JOIN(
        SELECT intake_id AS intakeId,
        CONCAT(
        IF(alarm_loss = 1, IF(alarm_water_meter_fault = 1, '流量计故障,', ''),
        IF(alarm_water_meter_fault = 1, '流量计故障', '')),
        IF(alarm_battery_volt = 1, IF(alarm_loss = 1, '漏损(偷水)报警,', ''),
        IF(alarm_loss = 1, '漏损(偷水)报警', '')),
        IF(alarm_valve = 1, IF(alarm_battery_volt = 1, '蓄电池电压报警,', ''),
        IF(alarm_battery_volt = 1, '蓄电池电压报警', '')),
        IF(alarm_valve = 1, '阀门报警', '')
        )     AS alarm
        FROM rm_alarm_state_last
        WHERE (alarm_water_meter_fault = 1 OR alarm_loss = 1 OR alarm_battery_volt = 1 OR alarm_valve = 1)
        AND dt >= DATE_SUB(NOW(), INTERVAL 12 HOUR)
        ) alarm ON alarm.intakeId = inta.id
        LEFT JOIN JSON_TABLE(
        <!--'[{"rtuAddr":"37142501020100215","isOnLine":true},{"rtuAddr":"4000004","isOnLine":true},{"rtuAddr":"dy20240325","isOnLine":false}]',-->
        #{onLineMap},
        '$[*]' COLUMNS (
        rtuAddr VARCHAR(20) PATH '$.rtuAddr',
        isOnLine BOOLEAN PATH '$.isOnLine'
        )
        ) rtus ON con.rtuAddr = rtus.rtuAddr
            LEFT JOIN pr_controller con ON con.intakeId = inta.id
            LEFT JOIN rm_on_hour_report_last hou ON hou.intake_id = inta.id
            LEFT JOIN(
                SELECT intake_id AS intakeId,
                    CONCAT(
                        IF(alarm_loss = 1, IF(alarm_water_meter_fault = 1, '流量计故障,', ''),
                        IF(alarm_water_meter_fault = 1, '流量计故障', '')),
                        IF(alarm_battery_volt = 1, IF(alarm_loss = 1, '漏损(偷水)报警,', ''),
                        IF(alarm_loss = 1, '漏损(偷水)报警', '')),
                        IF(alarm_valve = 1, IF(alarm_battery_volt = 1, '蓄电池电压报警,', ''),
                        IF(alarm_battery_volt = 1, '蓄电池电压报警', '')),
                        IF(alarm_valve = 1, '阀门报警', '')
                    ) AS alarm
                FROM rm_alarm_state_last
                WHERE (alarm_water_meter_fault = 1 OR alarm_loss = 1 OR alarm_battery_volt = 1 OR alarm_valve = 1)
                    AND dt >= DATE_SUB(NOW(), INTERVAL 12 HOUR)
            ) alarm ON alarm.intakeId = inta.id
            LEFT JOIN JSON_TABLE(
                <!--'[{"rtuAddr":"37142501020100215","isOnLine":true},{"rtuAddr":"4000004","isOnLine":true},{"rtuAddr":"dy20240325","isOnLine":false}]',-->
                #{onLineMap},
                '$[*]' COLUMNS (
                    rtuAddr VARCHAR(20) PATH '$.rtuAddr',
                    isOnLine BOOLEAN PATH '$.isOnLine'
                )
            ) rtus ON con.rtuAddr = rtus.rtuAddr
        <where>
            <if test="isOnLine != null">
                rtus.isOnLine = #{isOnLine}