From 001f24d4efd7b818bc2224b976c82faf4f9e564c Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期五, 01 十一月 2024 11:25:00 +0800
Subject: [PATCH] 1、通信协议要增加版本号(目的为远程升级准备),原来没有版本号的协议默认为版本号为1,所以调整了程序命名; 2、流浪控制器与控制器数据库表都增加了协议版本号字段; 3、VO中Double和Float类型的属性增加注解@JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" )
---
pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml | 430 ++++++++++++++++++++++++++++++++---------------------
1 files changed, 262 insertions(+), 168 deletions(-)
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml
index 5180618..5c02036 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml
@@ -40,7 +40,7 @@
<include refid="Base_Column_List"/>
from pr_intake
where id = #{id,jdbcType=BIGINT}
- and deleted = 0
+ and deleted = 0
</select>
<delete id="deleteLogicById" parameterType="java.lang.Long">
@@ -66,13 +66,13 @@
<insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoPr.PrIntake">
<!--@mbg.generated-->
insert into pr_intake (id, countyId, townId,
- villageId, divideId, blockId,
- `name`, lng, lat, remarks,
- `operator`, operateDt, deleted)
+ villageId, divideId, blockId,
+ `name`, lng, lat, remarks,
+ `operator`, operateDt, deleted)
values (#{id,jdbcType=BIGINT}, #{countyId,jdbcType=BIGINT}, #{townId,jdbcType=BIGINT},
- #{villageId,jdbcType=BIGINT}, #{divideId,jdbcType=BIGINT}, #{blockId,jdbcType=BIGINT},
- #{name,jdbcType=VARCHAR}, #{lng,jdbcType=DOUBLE}, #{lat,jdbcType=DOUBLE}, #{remarks,jdbcType=VARCHAR},
- #{operator,jdbcType=BIGINT}, #{operateDt,jdbcType=TIMESTAMP}, #{deleted,jdbcType=TINYINT})
+ #{villageId,jdbcType=BIGINT}, #{divideId,jdbcType=BIGINT}, #{blockId,jdbcType=BIGINT},
+ #{name,jdbcType=VARCHAR}, #{lng,jdbcType=DOUBLE}, #{lat,jdbcType=DOUBLE}, #{remarks,jdbcType=VARCHAR},
+ #{operator,jdbcType=BIGINT}, #{operateDt,jdbcType=TIMESTAMP}, #{deleted,jdbcType=TINYINT})
</insert>
<insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoPr.PrIntake">
<!--@mbg.generated-->
@@ -207,17 +207,17 @@
<!--@mbg.generated-->
update pr_intake
set countyId = #{countyId,jdbcType=BIGINT},
- townId = #{townId,jdbcType=BIGINT},
- villageId = #{villageId,jdbcType=BIGINT},
- divideId = #{divideId,jdbcType=BIGINT},
- blockId = #{blockId,jdbcType=BIGINT},
- `name` = #{name,jdbcType=VARCHAR},
- lng = #{lng,jdbcType=DOUBLE},
- lat = #{lat,jdbcType=DOUBLE},
- remarks = #{remarks,jdbcType=VARCHAR},
- `operator` = #{operator,jdbcType=BIGINT},
- operateDt = #{operateDt,jdbcType=TIMESTAMP},
- deleted = #{deleted,jdbcType=TINYINT}
+ townId = #{townId,jdbcType=BIGINT},
+ villageId = #{villageId,jdbcType=BIGINT},
+ divideId = #{divideId,jdbcType=BIGINT},
+ blockId = #{blockId,jdbcType=BIGINT},
+ `name` = #{name,jdbcType=VARCHAR},
+ lng = #{lng,jdbcType=DOUBLE},
+ lat = #{lat,jdbcType=DOUBLE},
+ remarks = #{remarks,jdbcType=VARCHAR},
+ `operator` = #{operator,jdbcType=BIGINT},
+ operateDt = #{operateDt,jdbcType=TIMESTAMP},
+ deleted = #{deleted,jdbcType=TINYINT}
where id = #{id,jdbcType=BIGINT}
</update>
@@ -231,14 +231,9 @@
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
- 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 cont.rtuAddr = rtus.rtuAddr
+ <if test = "bindNumber != null and bindNumber > 0">
+ 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
AND divi.deleted = 0
@@ -255,10 +250,10 @@
AND blo.id = #{blockId}
</if>
- <if test="isBinded == 0">
+ <if test="isBinded != null and isBinded == 0">
AND ge.id NOT IN (SELECT intakeId FROM pr_controller where deleted = 0)
</if>
- <if test="isBinded == 1">
+ <if test="isBinded != null and isBinded == 1">
AND ge.id IN (SELECT intakeId FROM pr_controller where deleted = 0)
</if>
<if test="isBinded == null">
@@ -269,57 +264,45 @@
<if test = "rtuAddr != null and rtuAddr !=''">
AND cont.rtuAddr like CONCAT('%',#{rtuAddr},'%')
</if>
- <if test="isOnLine != null and isOnLine !='' ">
- AND rtus.isOnLine = #{isOnLine}
- </if>
<if test="protocol != null and protocol !='' ">
AND cont.protocol = #{protocol}
</if>
<if test = "bindNumber != null and bindNumber > 0">
- AND (SELECT COUNT(*) FROM pr_intake_controller WHERE intakeId = ge.id AND operateType = 1) = ${bindNumber}
+ AND bindNumTb.num = #{bindNumber}
</if>
</where>
</select>
<!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鍙栨按鍙h褰�-->
<select id="getIntakes" resultType="com.dy.pipIrrGlobal.voPr.VoIntake">
- SELECT CAST(ge.id AS char) AS intakeId,
- ge.`name` AS intakeName,
- CAST(divi.id AS char) AS divideId,
- divi.`name` AS divideName,
- CAST(blo.id AS char) AS blockId,
- blo.`name` AS blockName,
- CAST(cont.id AS char) AS controllerId,
- cont.rtuAddr AS rtuAddr,
- cont.protocol AS protocol,
- cont.findDt AS findDt,
- rtus.isOnLine AS isOnLine,
- (SELECT COUNT(*) FROM pr_intake_controller WHERE intakeId = ge.id AND operateType = 1) AS bindNumber,
- ge.lng,
- ge.lat,
- ge.remarks,
- ge.operator,
- ge.operateDt As operateDt,
- (CASE
- WHEN ge.id NOT IN (SELECT intakeId FROM pr_controller where deleted = 0) THEN '鏈粦瀹�'
- WHEN ge.id IN (SELECT intakeId FROM pr_controller where deleted = 0) THEN '宸茬粦瀹�'
- END) AS isBind,
- CONCAT(country.`name`, town.`name`, village.`name`) AS address
+ WITH intakeIds AS(SELECT intakeId FROM pr_controller where deleted = 0)
+
+ SELECT CAST(ge.id AS char) AS intakeId,
+ ge.`name` AS intakeName,
+ CAST(divi.id AS char) AS divideId,
+ divi.`name` AS divideName,
+ CAST(blo.id AS char) AS blockId,
+ blo.`name` AS blockName,
+ CAST(cont.id AS char) AS controllerId,
+ cont.rtuAddr AS rtuAddr,
+ cont.protocol AS protocol,
+ cont.findDt AS findDt,
+ bindNumTb.num AS bindNumber,
+ ge.lng,
+ ge.lat,
+ ge.remarks,
+ ge.operator,
+ ge.operateDt As operateDt,
+ IF(ge.id IN (SELECT intakeId FROM intakeIds),'宸茬粦瀹�','鏈粦瀹�') AS isBind,
+ 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
- LEFT JOIN pr_controller cont ON ge.id = cont.intakeId
- 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 cont.rtuAddr = rtus.rtuAddr
+ 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
+ LEFT JOIN pr_controller cont ON ge.id = cont.intakeId
+ 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
@@ -327,19 +310,16 @@
<if test="intakeName != null and intakeName != ''">
AND ge.name LIKE CONCAT('%', #{intakeName}, '%')
</if>
-
<if test="divideId != null and divideId != ''">
AND divi.id = #{divideId}
</if>
-
<if test="blockId != null and blockId != ''">
AND blo.id = #{blockId}
</if>
-
- <if test="isBinded == 0">
+ <if test="isBinded != null and isBinded == 0">
AND ge.id NOT IN (SELECT intakeId FROM pr_controller where deleted = 0)
</if>
- <if test="isBinded == 1">
+ <if test="isBinded != null and isBinded == 1">
AND ge.id IN (SELECT intakeId FROM pr_controller where deleted = 0)
</if>
<if test="isBinded == null">
@@ -347,17 +327,14 @@
<if test="address != null and address != ''">
AND CONCAT(country.`name`, town.`name`, village.`name`) LIKE CONCAT('%', #{address}, '%')
</if>
- <if test = "rtuAddr != null and rtuAddr !=''">
+ <if test="rtuAddr != null and rtuAddr !=''">
AND cont.rtuAddr like CONCAT('%',#{rtuAddr},'%')
- </if>
- <if test="isOnLine != null and isOnLine !='' ">
- AND rtus.isOnLine = #{isOnLine}
</if>
<if test="protocol != null and protocol !='' ">
AND cont.protocol = #{protocol}
</if>
- <if test = "bindNumber != null and bindNumber > 0">
- AND (SELECT COUNT(*) FROM pr_intake_controller WHERE intakeId = ge.id AND operateType = 1) = ${bindNumber}
+ <if test="bindNumber != null and bindNumber > 0">
+ AND bindNumTb.num = #{bindNumber}
</if>
</where>
ORDER BY ge.operateDt DESC
@@ -372,9 +349,9 @@
<select id="getSupperByVillageId" parameterType="_long" resultType="java.lang.Long">
select dis_tow.*
from ba_district dis_vil
- inner join
- ba_district dis_tow
- on dis_vil.supperId = dis_tow.id
+ inner join
+ ba_district dis_tow
+ on dis_vil.supperId = dis_tow.id
where dis_vil.id = #{vaId,jdbcType=BIGINT}
</select>
@@ -383,18 +360,18 @@
SELECT COUNT(*) AS recordCount
FROM pr_intake
WHERE deleted = 0
- AND id = #{intakeId}
+ AND id = #{intakeId}
</select>
<!--鏍规嵁鏉慖D鑾峰彇鍏ㄩ儴鍦板潃-->
<select id="getAddressByVillageId" parameterType="_long" resultType="java.lang.String">
select CONCAT(dis_province.`name`, dis_city.`name`, dis_county.`name`, dis_town.`name`,
- dis_village.`name`) AS address
+ dis_village.`name`) AS address
from ba_district dis_village
- inner join ba_district dis_town on dis_village.supperId = dis_town.id
- inner join ba_district dis_county on dis_town.supperId = dis_county.id
- inner join ba_district dis_city on dis_county.supperId = dis_city.id
- inner join ba_district dis_province on dis_city.supperId = dis_province.id
+ inner join ba_district dis_town on dis_village.supperId = dis_town.id
+ inner join ba_district dis_county on dis_town.supperId = dis_county.id
+ inner join ba_district dis_city on dis_county.supperId = dis_city.id
+ inner join ba_district dis_province on dis_city.supperId = dis_province.id
where dis_village.id = #{villageId,jdbcType=BIGINT}
</select>
@@ -418,31 +395,31 @@
<select id="getOnLineIntakesCount" resultType="java.lang.Long">
SELECT COUNT(*) AS recordCount
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)
+ 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(
+ 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
+ rtuAddr VARCHAR(20) PATH '$.rtuAddr',
+ isOnLine BOOLEAN PATH '$.isOnLine'
+ )
+ ) rtus ON con.rtuAddr = rtus.rtuAddr
<where>
<if test="isOnLine != null">
rtus.isOnLine = #{isOnLine}
@@ -461,43 +438,44 @@
<!--鑾峰彇鍙栨按鍙e垪琛紙鍦ㄧ嚎鍜屼笉鍦ㄥ厛锛�-->
<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
+ 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'
- )
+ <!--'[{"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">
@@ -521,21 +499,135 @@
</trim>
</select>
- <!--鏍规嵁鍙栨按鍙g紪鍙疯幏鍙栧彇姘村彛瀵硅薄-->
- <select id="getIntakeByName" resultType="com.dy.pipIrrGlobal.voPr.VoOnLineIntake">
- SELECT con.intakeId,
- con.rtuAddr,
- inta.name AS intakeNum,
- rtus.isOnLine
- FROM pr_controller con
- INNER JOIN pr_intake inta ON con.intakeId = inta.id
- left JOIN JSON_TABLE(
+
+
+
+
+
+
+ <!--鑾峰彇鍙栨按鍙f暟閲忥紙鍦ㄧ嚎鎴栫绾挎垨涓嶈鐘舵�侊級-->
+ <select id="selectIntakesCountForOnLine" resultType="java.lang.Long">
+ SELECT COUNT(*) AS recordCount
+ FROM pr_intake inta
+ INNER JOIN pr_controller con ON con.intakeId = inta.id
+ <if test="onLineMap != null and onLineMap !='' and isOnLine != null">
+ 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
+ </if>
+ WHERE con.intakeId is not null
+ <if test="isOnLine != null and isOnLine == false">
+ <choose>
+ <when test="onLineMap != null and onLineMap !=''">
+ AND (rtus.isOnLine = false OR rtus.rtuAddr IS NULL)
+ </when>
+ <otherwise>
+ AND rtus.rtuAddr IS NULL
+ </otherwise>
+ </choose>
+ </if>
+ <if test="isOnLine != null and isOnLine == true">
+ AND rtus.isOnLine = true
+ </if>
+ <if test="intakeNum != null and intakeNum != ''">
+ AND inta.name = #{intakeNum}
+ </if>
+ </select>
+
+
+ <!--鑾峰彇鍙栨按鍙e垪琛紙鍦ㄧ嚎鎴栫绾挎垨涓嶈鐘舵�侊級-->
+ <select id="selectIntakesForOnLine" 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,
+ <if test="onLineMap != null and onLineMap !='' and isOnLine != null">
+ rtus.isOnLine,
+ </if>
+ alarm.alarm
+ 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
+ LEFT JOIN(
+ SELECT intake_id AS intakeId,
+ CONCAT(
+ IF(alarm_loss = 1, '婕忔崯鎶ヨ锛�', ''),
+ IF(alarm_battery_volt = 1, '鐢垫睜鐢靛帇鎶ヨ锛�', ''),
+ IF(alarm_valve = 1, '闃�闂ㄦ姤璀︼紝', ''),
+ IF(alarm_water_meter_fault = 1, '娴侀噺璁℃晠闅滄姤璀︼紝', '')
+ ) AS alarm
+ 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)
+ ) alarm ON alarm.intakeId = inta.id
+ <if test="onLineMap != null and onLineMap !='' and isOnLine != null">
+ 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
+ </if>
+ WHERE con.intakeId is not null
+ <if test="isOnLine != null and isOnLine == false">
+ <choose>
+ <when test="onLineMap != null and onLineMap !=''">
+ AND (rtus.isOnLine = false OR rtus.rtuAddr IS NULL)
+ </when>
+ <otherwise>
+ AND rtus.rtuAddr IS NULL
+ </otherwise>
+ </choose>
+ </if>
+ <if test="isOnLine != null and isOnLine == true">
+ AND rtus.isOnLine = true
+ </if>
+ <if test="intakeNum != null and intakeNum != ''">
+ AND inta.name = #{intakeNum}
+ </if>
+ order by inta.id ASC
+ <trim prefix="limit ">
+ <if test="start != null and count != null">
+ #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
+ </if>
+ </trim>
+ </select>
+
+
+
+
+
+
+
+
+
+
+
+ <!--鏍规嵁鍙栨按鍙g紪鍙疯幏鍙栧彇姘村彛瀵硅薄-->
+ <select id="getIntakeByName" resultType="com.dy.pipIrrGlobal.voPr.VoOnLineIntake">
+ SELECT con.intakeId,
+ con.rtuAddr,
+ inta.name AS intakeNum,
+ rtus.isOnLine
+ 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
<where>
<if test="intakeNum != null and intakeNum != ''">
AND LOWER(inta.name) = #{intakeNum}
@@ -546,26 +638,28 @@
<!--鏍规嵁鎿嶄綔鍛樿幏鍙栧父鐢ㄥ彇姘村彛-->
<select id="getUsedIntakes" resultType="com.dy.pipIrrGlobal.voPr.VoOnLineIntake">
- SELECT DISTINCT con.intakeId,
- con.rtuAddr,
- inta.name AS intakeNum,
- rtus.isOnLine
- FROM pr_controller con
- INNER JOIN pr_intake inta ON con.intakeId = inta.id
- INNER JOIN rm_command_history com ON con.rtuAddr = com.rtu_addr
- 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'
- )
+ SELECT
+ com.intake_id AS intakeId,
+ con.rtuAddr,
+ inta.name AS intakeNum,
+ rtus.isOnLine
+ FROM pr_common_intakes com
+ INNER JOIN pr_intake inta ON inta.id = com.intake_id
+ INNER JOIN pr_controller con ON con.intakeId = com.intake_id
+ LEFT JOIN JSON_TABLE(
+ <!--'[{"rtuAddr":"530115059980","isOnLine":true},{"rtuAddr":"620201000030","isOnLine":true}]',-->
+ #{onLineMap},
+ '$[*]' COLUMNS (
+ rtuAddr VARCHAR(20) PATH '$.rtuAddr',
+ isOnLine BOOLEAN PATH '$.isOnLine'
+ )
) rtus ON con.rtuAddr = rtus.rtuAddr
<where>
- <if test="operator != null">
- com.operator = #{operator}
+ <if test="operatorId != null">
+ AND com.operator_id = #{operatorId}
</if>
</where>
+ ORDER BY com.last_used_time DESC,com.usage_count DESC
</select>
<!--鍙栨按鍙e悕绉版崲鍙栨按鍙D锛屾壂鐮佸紑闃�浣跨敤-->
@@ -587,6 +681,6 @@
SELECT id AS intakeId
FROM pr_intake
WHERE id != #{id}
- and `name` = #{intakeName}
+ and `name` = #{intakeName}
</select>
</mapper>
\ No newline at end of file
--
Gitblit v1.8.0