|  |  | 
 |  |  |     SELECT | 
 |  |  |         COUNT(*) AS recordCount | 
 |  |  |     FROM pr_controller con | 
 |  |  |         INNER JOIN pr_intake_controller ic ON ic.controllerId = con.id | 
 |  |  |         INNER JOIN pr_intake inta ON con.intakeId = inta.id | 
 |  |  |     LEFT JOIN pr_intake_controller ic ON ic.controllerId = con.id | 
 |  |  |     INNER JOIN pr_intake inta ON con.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> | 
 |  |  |       AND ic.operateType = 1 | 
 |  |  |       AND con.deleted = 0 | 
 |  |  |  | 
 |  |  |       <if test = "id != null and id > 0"> | 
 |  |  |         AND con.id = ${id} | 
 |  |  |       </if> | 
 |  |  |  | 
 |  |  |       <if test = "rtuAddr != null and rtuAddr !=''"> | 
 |  |  |         AND con.rtuAddr like CONCAT('%',#{rtuAddr},'%') | 
 |  |  |       </if> | 
 |  |  |  | 
 |  |  |       <if test="isOnLine != null and isOnLine !='' "> | 
 |  |  |         AND rtus.isOnLine = #{isOnLine} | 
 |  |  |       </if> | 
 |  |  |       <if test = "bindNumber != null and bindNumber > 0"> | 
 |  |  |         AND (SELECT COUNT(*) FROM pr_intake_controller WHERE controllerId = con.id AND intakeId = inta.id AND operateType = 1) = ${bindNumber} | 
 |  |  |       </if> | 
 |  |  | 
 |  |  |         CAST(con.id AS char) AS id, | 
 |  |  |         con.rtuAddr AS rtuAddr, | 
 |  |  |         inta.name AS intakeName, | 
 |  |  |         "在线" AS onlineState, | 
 |  |  |         con.protocol, | 
 |  |  |         inta.remarks, | 
 |  |  |         rtus.isOnLine, | 
 |  |  |         (SELECT COUNT(*) FROM pr_intake_controller WHERE controllerId = con.id AND intakeId = inta.id AND operateType = 1) AS bindNumber, | 
 |  |  |         con.findDt AS findDt | 
 |  |  |     FROM pr_controller con | 
 |  |  |         INNER JOIN pr_intake_controller ic ON ic.controllerId = con.id | 
 |  |  |         LEFT JOIN pr_intake_controller ic ON ic.controllerId = con.id | 
 |  |  |         INNER JOIN pr_intake inta ON con.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> | 
 |  |  |       AND ic.operateType = 1 | 
 |  |  |       AND con.deleted = 0 | 
 |  |  |  | 
 |  |  |       <if test = "id != null and id > 0"> | 
 |  |  |         AND con.id = ${id} | 
 |  |  |       </if> | 
 |  |  |  | 
 |  |  |       <if test = "rtuAddr != null and rtuAddr !=''"> | 
 |  |  |         AND con.rtuAddr like CONCAT('%',#{rtuAddr},'%') | 
 |  |  |       </if> | 
 |  |  |  | 
 |  |  |       <if test="isOnLine != null and isOnLine !='' "> | 
 |  |  |         AND rtus.isOnLine = #{isOnLine} | 
 |  |  |       </if> | 
 |  |  |       <if test = "bindNumber != null and bindNumber > 0"> | 
 |  |  |         AND (SELECT COUNT(*) FROM pr_intake_controller WHERE controllerId = con.id AND intakeId = inta.id AND operateType = 1) = ${bindNumber} | 
 |  |  |       </if> | 
 |  |  | 
 |  |  |   <select id="getBindedCount" resultType="java.lang.Integer"> | 
 |  |  |     SELECT COUNT(*) AS recordCount FROM pr_controller WHERE rtuAddr = (SELECT rtuAddr FROM pr_controller_tramp WHERE id = ${controllerId}) AND intakeId IS NOT NULL | 
 |  |  |   </select> | 
 |  |  |  | 
 |  |  |   <!--根据取水口ID或阀控器地址获取阀控器对象--> | 
 |  |  |   <select id="getRtu" resultType="com.dy.pipIrrGlobal.pojoPr.PrController"> | 
 |  |  |     SELECT * FROM pr_controller | 
 |  |  |     <where> | 
 |  |  |       AND deleted = 0 | 
 |  |  |       <if test = "intakeId != null"> | 
 |  |  |         AND intakeId = #{intakeId} | 
 |  |  |       </if> | 
 |  |  |       <if test = "rtuAddr != null"> | 
 |  |  |         AND rtuAddr = #{rtuAddr} | 
 |  |  |       </if> | 
 |  |  |     </where> | 
 |  |  |     LIMIT 0,1 | 
 |  |  |   </select> | 
 |  |  | </mapper> |