|  |  | 
 |  |  |  | 
 |  |  |     <!--根据操作员ID获取未关阀记录(包含在线情况)--> | 
 |  |  |     <select id="getUnclosedValves" resultType="com.dy.pipIrrGlobal.voRm.VoUnclosedValve"> | 
 |  |  |         SELECT inta.name                  AS intakeNum, | 
 |  |  |                rtus.isOnLine, | 
 |  |  |                com.rtu_addr               AS rtuAddr, | 
 |  |  |                com.param ->> '$.icCardNo' AS vcNum, | 
 |  |  |                (SELECT param ->> '$.orderNo' AS orderNo | 
 |  |  |         SELECT | 
 |  |  |             inta.name AS intakeNum, | 
 |  |  |             rtus.isOnLine, | 
 |  |  |             com.rtu_addr AS rtuAddr, | 
 |  |  |             com.param ->> '$.icCardNo' AS vcNum, | 
 |  |  |             ( | 
 |  |  |                 SELECT param ->> '$.orderNo' AS orderNo | 
 |  |  |                 FROM rm_command_history | 
 |  |  |                 WHERE rtu_addr = com.rtu_addr | 
 |  |  |                 ORDER BY send_time desc | 
 |  |  |                 LIMIT 0,1)                AS orderNo, | 
 |  |  |                'toClose'                  AS state | 
 |  |  |                 LIMIT 0,1 | 
 |  |  |             ) AS orderNo, | 
 |  |  |             'toClose'                  AS state, | 
 |  |  |             CASE | 
 |  |  |                 WHEN com.command_code = 'A1' OR com.command_code = 'A2' THEN 0 | 
 |  |  |                 ELSE 0 | 
 |  |  |             END AS planned, | 
 |  |  |             com.send_time AS sendTime | 
 |  |  |         FROM rm_command_history com | 
 |  |  |             INNER JOIN pr_controller con ON com.rtu_addr = con.rtuAddr | 
 |  |  |             INNER JOIN pr_intake inta ON con.intakeId = inta.id | 
 |  |  |             INNER 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 com.rtu_addr = rtus.rtuAddr | 
 |  |  |         <where> | 
 |  |  |             AND (com.command_code = '92' OR com.command_code = 'A2' OR com.command_code = '97') | 
 |  |  |                   AND com.operator = #{operator} | 
 |  |  |                   AND NOT EXISTS( | 
 |  |  |                     SELECT * | 
 |  |  |                     FROM rm_command_history | 
 |  |  |                     WHERE (result IS NULL OR result = 1) | 
 |  |  |                       AND (command_code = '93' OR command_code = 'A3' OR command_code = '98') | 
 |  |  |                       AND param ->> '$.orderNo' = com.param ->> '$.orderNo' | 
 |  |  |                 ) | 
 |  |  |         </where> | 
 |  |  |         GROUP BY inta.name, rtus.isOnLine, com.rtu_addr, com.param ->> '$.icCardNo' | 
 |  |  |  | 
 |  |  |         UNION ALL | 
 |  |  |  | 
 |  |  |         SELECT inta.name                  AS intakeNum, | 
 |  |  |                rtus.isOnLine, | 
 |  |  |                com.rtu_addr               AS rtuAddr, | 
 |  |  |                com.param ->> '$.icCardNo' AS vcNum, | 
 |  |  |                (SELECT param ->> '$.orderNo' AS orderNo | 
 |  |  |                 FROM rm_command_history | 
 |  |  |                 WHERE rtu_addr = com.rtu_addr | 
 |  |  |                 ORDER BY send_time desc | 
 |  |  |                 LIMIT 0,1)                AS orderNo, | 
 |  |  |                'toCancel'                 AS state | 
 |  |  |         FROM rm_command_history com | 
 |  |  |                  INNER JOIN pr_intake inta ON inta.id = com.intake_id | 
 |  |  |                  INNER JOIN JSON_TABLE( | 
 |  |  |             LEFT JOIN JSON_TABLE( | 
 |  |  | <!--                '[{"rtuAddr":"620201000030","isOnLine":true}]',--> | 
 |  |  |                 #{onLineMap}, | 
 |  |  |                 '$[*]' COLUMNS ( | 
 |  |  |                     rtuAddr VARCHAR(20) PATH '$.rtuAddr', | 
 |  |  | 
 |  |  |                     ) | 
 |  |  |             ) rtus ON com.rtu_addr = rtus.rtuAddr | 
 |  |  |         <where> | 
 |  |  |             AND (command_code = 'A1' OR command_code = 'A2') | 
 |  |  |             AND com.operator = #{operator} | 
 |  |  |                   AND DATE_FORMAT( | 
 |  |  |                               CONCAT(com.param ->> '$.year', '-', com.param ->> '$.month', '-', com.param ->> '$.day', | 
 |  |  |                                      ' ', | 
 |  |  |                                      com.param ->> '$.hour', ':', com.param ->> '$.minute', ':', '0'), | 
 |  |  |                               '%Y-%m-%d %H:%i:%S') > NOW() | 
 |  |  |             AND (com.protocol = 'p206V1_0_1' AND (com.command_code = '92' OR com.command_code = '97' OR com.command_code = '99' OR com.command_code = 'A0' OR com.command_code = 'A1' OR com.command_code = 'A2')) | 
 |  |  |             AND ( | 
 |  |  |                 SELECT cl_dt FROM rm_open_close_valve_last | 
 |  |  |                 WHERE rtu_addr = com.rtu_addr AND op_ic_card_no = com.param ->> '$.icCardNo' | 
 |  |  |                 ORDER BY op_dt DESC | 
 |  |  |                 LIMIT 1 | 
 |  |  |             ) IS NULL | 
 |  |  |         </where> | 
 |  |  |         GROUP BY inta.name, rtus.isOnLine, com.rtu_addr, com.param ->> '$.icCardNo', com.command_code, com.send_time | 
 |  |  |         ORDER BY com.send_time DESC | 
 |  |  |         LIMIT 1 | 
 |  |  |     </select> | 
 |  |  |  | 
 |  |  |     <!--根据取水口ID获取该取水口未关阀参数--> |