|  |  | 
 |  |  |         operateDt, | 
 |  |  |         deleted | 
 |  |  |     </sql> | 
 |  |  |     <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> | 
 |  |  |     <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultType="com.dy.pipIrrGlobal.voPr.VoAllIntake"> | 
 |  |  |         <!--@mbg.generated--> | 
 |  |  |         select | 
 |  |  |         <include refid="Base_Column_List"/> | 
 |  |  |         from pr_intake | 
 |  |  |         where id = #{id,jdbcType=BIGINT} | 
 |  |  |         and deleted = 0 | 
 |  |  |         ge.id, | 
 |  |  |         ge.countyId, | 
 |  |  |         ge.townId, | 
 |  |  |         ge.villageId, | 
 |  |  |         ge.divideId, | 
 |  |  |         ge.blockId, | 
 |  |  |         ge.`name`, | 
 |  |  |         ge.lng, | 
 |  |  |         ge.lat, | 
 |  |  |         ge.remarks, | 
 |  |  |         ge.`operator`, | 
 |  |  |         ge.operateDt, | 
 |  |  |         blo.`name`                                          AS blockName, | 
 |  |  |         CONCAT(country.`name`, town.`name`, village.`name`)              AS address | 
 |  |  |         FROM pr_intake ge | 
 |  |  |         INNER JOIN pr_divide divi ON ge.divideId = divi.id | 
 |  |  |         INNER JOIN ba_block blo ON divi.blockId = blo.id | 
 |  |  |         LEFT JOIN ba_district country ON ge.countyId = country.id | 
 |  |  |         LEFT JOIN ba_district town ON ge.townId = town.id | 
 |  |  |         LEFT JOIN ba_district village ON ge.villageId = village.id | 
 |  |  |         where ge.id = #{id,jdbcType=BIGINT} | 
 |  |  |         AND ge.deleted = 0 | 
 |  |  |         AND divi.deleted = 0 | 
 |  |  |         AND blo.deleted = 0 | 
 |  |  |     </select> | 
 |  |  |  | 
 |  |  |     <delete id="deleteLogicById" parameterType="java.lang.Long"> | 
 |  |  | 
 |  |  |         where id = #{id,jdbcType=BIGINT} | 
 |  |  |     </delete> | 
 |  |  |  | 
 |  |  |     <select id="selectAll" resultMap="BaseResultMap"> | 
 |  |  |     <select id="selectAll"  resultType="com.dy.pipIrrGlobal.voPr.VoAllIntake"> | 
 |  |  |         <!--@mbg.generated--> | 
 |  |  |         select | 
 |  |  |         <include refid="Base_Column_List"/> | 
 |  |  |         from pr_intake | 
 |  |  |         where deleted != 1 | 
 |  |  |         ge.id, | 
 |  |  |         ge.countyId, | 
 |  |  |         ge.townId, | 
 |  |  |         ge.villageId, | 
 |  |  |         ge.divideId, | 
 |  |  |         ge.blockId, | 
 |  |  |         ge.`name`, | 
 |  |  |         ge.lng, | 
 |  |  |         ge.lat, | 
 |  |  |         ge.remarks, | 
 |  |  |         ge.`operator`, | 
 |  |  |         ge.operateDt, | 
 |  |  |         blo.`name`                                          AS blockName, | 
 |  |  |         CONCAT(country.`name`, town.`name`, village.`name`)              AS address | 
 |  |  |         FROM pr_intake ge | 
 |  |  |         INNER JOIN pr_divide divi ON ge.divideId = divi.id | 
 |  |  |         INNER JOIN ba_block blo ON divi.blockId = blo.id | 
 |  |  |         LEFT JOIN ba_district country ON ge.countyId = country.id | 
 |  |  |         LEFT JOIN ba_district town ON ge.townId = town.id | 
 |  |  |         LEFT JOIN ba_district village ON ge.villageId = village.id | 
 |  |  |         where | 
 |  |  |         ge.deleted = 0 | 
 |  |  |         AND divi.deleted = 0 | 
 |  |  |         AND blo.deleted = 0 | 
 |  |  |     </select> | 
 |  |  |     <delete id="deleteByPrimaryKey" parameterType="java.lang.Long"> | 
 |  |  |         <!--@mbg.generated--> | 
 |  |  | 
 |  |  |         LEFT JOIN ba_district village ON ge.villageId = village.id | 
 |  |  |         LEFT JOIN pr_controller cont ON ge.id = cont.intakeId | 
 |  |  |         <if test = "bindNumber != null and bindNumber > 0"> | 
 |  |  |             JOIN (SELECT intakeId, COUNT(*) num FROM pr_intake_controller WHERE operateType = 1 group by intakeId) AS bindNumTb on bindNumTb.intakeId= ge.id | 
 |  |  |             LEFT JOIN (SELECT intakeId, COUNT(*) num FROM pr_intake_controller WHERE operateType = 1 group by intakeId) AS bindNumTb on bindNumTb.intakeId= ge.id | 
 |  |  |         </if> | 
 |  |  |         <where> | 
 |  |  |             ge.deleted = 0 | 
 |  |  | 
 |  |  |         LEFT JOIN ba_district town ON ge.townId = town.id | 
 |  |  |         LEFT JOIN ba_district village ON ge.villageId = village.id | 
 |  |  |         LEFT JOIN pr_controller cont ON ge.id = cont.intakeId | 
 |  |  |         JOIN (SELECT intakeId, COUNT(*) num FROM pr_intake_controller WHERE operateType = 1 group by intakeId) AS bindNumTb on bindNumTb.intakeId= ge.id | 
 |  |  |         LEFT JOIN (SELECT intakeId, COUNT(*) num FROM pr_intake_controller WHERE operateType = 1 group by intakeId) AS bindNumTb on bindNumTb.intakeId= ge.id | 
 |  |  |         <where> | 
 |  |  |             ge.deleted = 0 | 
 |  |  |             AND divi.deleted = 0 | 
 |  |  | 
 |  |  |         FROM pr_intake | 
 |  |  |         WHERE deleted = 0 | 
 |  |  |         AND id = #{intakeId} | 
 |  |  |     </select> | 
 |  |  |  | 
 |  |  |     <!--根据村ID获取全部地址--> | 
 |  |  |     <select id="getNameById" resultType="java.lang.String"> | 
 |  |  |         select name | 
 |  |  |         from pr_intake | 
 |  |  |         where id = #{intakeId, jdbcType=BIGINT} | 
 |  |  |     </select> | 
 |  |  |  | 
 |  |  |     <!--根据村ID获取全部地址--> | 
 |  |  | 
 |  |  |  | 
 |  |  |     <!--获取取水口列表(在线和不在先)--> | 
 |  |  |     <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} | 
 |  |  | 
 |  |  |         inta.name                   AS intakeNum, | 
 |  |  |         inta.lng, | 
 |  |  |         inta.lat, | 
 |  |  |         IFNULL(hou.instant_amount, 0) AS instantAmount, | 
 |  |  |         IFNULL(hou.total_amount, 0) AS totalAmount, | 
 |  |  |         <if test="onLineMap != null and onLineMap !='' and isOnLine != null"> | 
 |  |  |             rtus.isOnLine, | 
 |  |  |         </if> | 
 |  |  |         alarm.alarm | 
 |  |  |         alarm.alarm, | 
 |  |  |         alarm.alarmDt | 
 |  |  |         FROM pr_intake inta | 
 |  |  |         INNER JOIN pr_controller con ON con.intakeId = inta.id | 
 |  |  |         LEFT JOIN rm_on_hour_report_last hou ON hou.intake_id = inta.id | 
 |  |  | 
 |  |  |                 IF(alarm_battery_volt = 1, '电池电压报警,', ''), | 
 |  |  |                 IF(alarm_valve = 1, '阀门报警,', ''), | 
 |  |  |                 IF(alarm_water_meter_fault = 1, '流量计故障报警,', '') | 
 |  |  |             ) AS alarm | 
 |  |  |             ) AS alarm, | 
 |  |  |             dt AS alarmDt | 
 |  |  |             FROM rm_alarm_state_last | 
 |  |  |             WHERE (alarm_loss = 1 OR alarm_battery_volt = 1 OR alarm_valve = 1 OR alarm_water_meter_fault = 1) | 
 |  |  |             AND dt >= DATE_SUB(NOW(), INTERVAL 12 HOUR) | 
 |  |  | 
 |  |  |         </trim> | 
 |  |  |     </select> | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     <!--根据取水口编号获取取水口对象--> | 
 |  |  |     <select id="getIntakeByName" resultType="com.dy.pipIrrGlobal.voPr.VoOnLineIntake"> | 
 |  |  |         SELECT con.intakeId, | 
 |  |  |         con.rtuAddr, | 
 |  |  |         inta.name AS intakeNum, | 
 |  |  |         rtus.isOnLine | 
 |  |  |         SELECT | 
 |  |  |             con.intakeId, | 
 |  |  |             con.rtuAddr, | 
 |  |  |             inta.name AS intakeNum | 
 |  |  |         FROM pr_controller con | 
 |  |  |         INNER JOIN pr_intake inta ON con.intakeId = inta.id | 
 |  |  |         left JOIN JSON_TABLE( | 
 |  |  |         #{onLineMap}, | 
 |  |  |         '$[*]' COLUMNS ( | 
 |  |  |         rtuAddr VARCHAR(20) PATH '$.rtuAddr', | 
 |  |  |         isOnLine BOOLEAN PATH '$.isOnLine' | 
 |  |  |         ) | 
 |  |  |         ) rtus ON con.rtuAddr = rtus.rtuAddr | 
 |  |  |             INNER JOIN pr_intake inta ON con.intakeId = inta.id | 
 |  |  |         <where> | 
 |  |  |             <if test="intakeNum != null and intakeNum != ''"> | 
 |  |  |                 AND LOWER(inta.name) = #{intakeNum} | 
 |  |  | 
 |  |  |         WHERE id != #{id} | 
 |  |  |         and `name` = #{intakeName} | 
 |  |  |     </select> | 
 |  |  |     <!--app修改取水口经纬度--> | 
 |  |  |     <update id="updateByPrimaryKeySelective1" parameterType="com.dy.pipIrrGlobal.voPr.IntakeUpdateLngLat"> | 
 |  |  |         <!--@mbg.generated--> | 
 |  |  |         update pr_intake | 
 |  |  |         <set> | 
 |  |  |             <if test="lng != null"> | 
 |  |  |                 lng = #{lng,jdbcType=DOUBLE}, | 
 |  |  |             </if> | 
 |  |  |             <if test="lat != null"> | 
 |  |  |                 lat = #{lat,jdbcType=DOUBLE}, | 
 |  |  |             </if> | 
 |  |  |             <if test="operator != null"> | 
 |  |  |                 `operator` = #{operator,jdbcType=BIGINT}, | 
 |  |  |             </if> | 
 |  |  |             <if test="operateDt != null"> | 
 |  |  |                 operateDt = #{operateDt,jdbcType=TIMESTAMP}, | 
 |  |  |             </if> | 
 |  |  |         </set> | 
 |  |  |         where id = #{id,jdbcType=BIGINT} | 
 |  |  |     </update> | 
 |  |  |  | 
 |  |  |     <!--获取未绑定到轮灌组的取水口列表--> | 
 |  |  |     <select id="getFreeIntakes" resultType="com.dy.pipIrrGlobal.voPr.VoIntakeSimple"> | 
 |  |  |         SELECT | 
 |  |  |             id AS intakeId, | 
 |  |  |             name AS intakeName | 
 |  |  |         FROM pr_intake inta | 
 |  |  |         <where> | 
 |  |  |             AND inta.deleted = 0 | 
 |  |  |             AND NOT EXISTS (SELECT 1 FROM ir_group_intake gi WHERE gi.intake_id = inta.id) | 
 |  |  |             <if test="intakeName != null and intakeName != ''"> | 
 |  |  |                 AND LOWER(inta.name) LIKE CONCAT('%', #{intakeName}, '%') | 
 |  |  |             </if> | 
 |  |  |         </where> | 
 |  |  |     </select> | 
 |  |  |  | 
 |  |  |     <!--获取未绑定虚拟卡的取水口列表,给取水口绑虚拟卡使用--> | 
 |  |  |     <select id="getNotLinkVcIntakes" resultType="com.dy.pipIrrGlobal.voPr.VoIntakeSimple"> | 
 |  |  |         SELECT | 
 |  |  |             id AS intakeId, | 
 |  |  |             name AS intakeName | 
 |  |  |         FROM pr_intake inta | 
 |  |  |         WHERE NOT EXISTS ( | 
 |  |  |                 SELECT 1 | 
 |  |  |                 FROM pr_intake_vc iv | 
 |  |  |                 WHERE iv.intake_id = inta.id | 
 |  |  |             ) AND inta.deleted = 0 | 
 |  |  |     </select> | 
 |  |  | </mapper> |