From 1ba46471b7831f057991ad92573463488504b20e Mon Sep 17 00:00:00 2001 From: zhubaomin <zhubaomin> Date: 星期三, 13 十一月 2024 17:41:14 +0800 Subject: [PATCH] 优化未关阀记录接口2 --- pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 108 insertions(+), 5 deletions(-) diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml index 4e36ac2..f743ff1 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml @@ -195,7 +195,43 @@ where com_id = #{comId,jdbcType=BIGINT} </update> - <!--鏍规嵁鎿嶄綔鍛業D鑾峰彇鏈叧闃�璁板綍锛堝寘鍚湪绾挎儏鍐碉級--> + <!--鏍规嵁operator鑾峰彇鏈叧闃�鐨凴TU鍦板潃鍙婅櫄鎷熷崱缂栧彿鏁版嵁瀵癸紝鑾峰彇鏈叧闃�璁板綍浣跨敤--> + <select id="getUnclosedRtus" resultType="com.dy.pipIrrGlobal.voRm.VoRtuAndVc"> + SELECT + com.rtu_addr AS rtuAddr, + com.param ->> '$.icCardNo' AS vcNum + FROM rm_command_history com + where 1=1 + AND com.operator = #{operator} + AND com.result = 1 + AND ((com.protocol = 'p206V1' OR com.protocol = 'p206V2') 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 op_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 NOT NULL + 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 + GROUP BY com.rtu_addr, com.param ->> '$.icCardNo' + </select> + + <!--鏍规嵁RTU鍦板潃鍜岃櫄鎷熷崱缂栧彿鑾峰彇鎴愬姛寮�闃�鐨勬渶鍚庝竴鏉¤褰曪紝鑾峰彇鏈叧闃�璁板綍浣跨敤--> + <select id="getLastComId" resultType="java.lang.Long"> + SELECT com_id AS comId + FROM rm_command_history + WHERE result = 1 + AND ((protocol = 'p206V1' OR protocol = 'p206V2') + AND (command_code = '92' OR command_code = '97' OR command_code = '99' OR command_code = 'A0' OR command_code = 'A1' OR command_code = 'A2')) + AND rtu_addr = #{rtuAddr} AND param ->> '$.icCardNo' = #{vcNum} + ORDER BY send_time DESC + LIMIT 1 + </select> + <select id="getUnclosedValves" resultType="com.dy.pipIrrGlobal.voRm.VoUnclosedValve"> SELECT inta.name AS intakeNum, @@ -216,16 +252,83 @@ END AS planned, com.send_time AS sendTime, - <!--鍚屽崱銆佸悓璁惧鐨勬渶鍚庝竴娆″伐浣滄姤鐨勬椂闂村拰鐬椂娴侀噺锛屽伐浣滄姤鏃堕棿蹇呴』鏅氫簬鍚屽崱銆佸悓璁惧鏈�鍚庝竴娆″紑闃�璁板綍鐨勫紑闃�鏃堕棿--> + (SELECT dt FROM rm_work_report_last + WHERE rtu_addr = com.rtu_addr AND ic_card_no = com.param ->> '$.icCardNo' + AND dt > com.send_time + ORDER BY dt DESC + LIMIT 1) AS dt, + + (SELECT water_instant FROM rm_work_report_last + WHERE rtu_addr = com.rtu_addr AND ic_card_no = com.param ->> '$.icCardNo' + AND dt > com.send_time + ORDER BY dt DESC + LIMIT 1) AS waterInstant + 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 + LEFT JOIN JSON_TABLE( + <!--'[{"rtuAddr":"620201000030","isOnLine":true}]',--> + #{onLineMap}, + '$[*]' COLUMNS ( + rtuAddr VARCHAR(20) PATH '$.rtuAddr', + isOnLine BOOLEAN PATH '$.isOnLine' + ) + ) rtus ON com.rtu_addr = rtus.rtuAddr + <where> + AND com.com_id in (#{comIds}) + + AND ( + SELECT op_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 NOT NULL + + 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, dt, waterInstant + ORDER BY com.send_time DESC + </select> + + + + <!--鏍规嵁鎿嶄綔鍛業D鑾峰彇鏈叧闃�璁板綍锛堝寘鍚湪绾挎儏鍐碉級--> + <select id="getUnclosedValves2" resultType="com.dy.pipIrrGlobal.voRm.VoUnclosedValve"> + SELECT + inta.name AS intakeNum, + IFNULL(rtus.isOnLine, false) AS 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, + CASE + WHEN com.command_code = 'A1' OR com.command_code = 'A2' THEN 1 + ELSE 0 + END AS planned, + com.send_time AS sendTime, + (SELECT dt FROM rm_work_report_last WHERE rtu_addr = com.rtu_addr AND ic_card_no = com.param ->> '$.icCardNo' - AND dt > (SELECT op_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) + <!--AND dt > (SELECT op_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)--> + AND dt > com.send_time ORDER BY dt DESC LIMIT 1) AS dt, (SELECT water_instant FROM rm_work_report_last WHERE rtu_addr = com.rtu_addr AND ic_card_no = com.param ->> '$.icCardNo' - AND dt > (SELECT op_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) + <!--AND dt > (SELECT op_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)--> + AND dt > com.send_time ORDER BY dt DESC LIMIT 1) AS waterInstant @@ -242,6 +345,7 @@ ) rtus ON com.rtu_addr = rtus.rtuAddr <where> AND com.operator = #{operator} + AND com.result = 1 AND ((com.protocol = 'p206V1' OR com.protocol = 'p206V2') 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 op_dt FROM rm_open_close_valve_last @@ -258,7 +362,6 @@ </where> GROUP BY inta.name, rtus.isOnLine, com.rtu_addr, com.param ->> '$.icCardNo', com.command_code, com.send_time, dt, waterInstant ORDER BY com.send_time DESC - LIMIT 1 </select> <!--鏍规嵁鍙栨按鍙D鑾峰彇璇ュ彇姘村彛鏈叧闃�鍙傛暟--> -- Gitblit v1.8.0