From 24bbe7a75c85816524c097caacb141cc6846acb9 Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期三, 11 十二月 2024 15:21:21 +0800 Subject: [PATCH] 增加删除取水口水量月统计年统计重复数据功能,增加删除农户用水量月统计年统计重复数据功能, --- pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml | 155 ++++++++++++++++++++++++++++++++------------------- 1 files changed, 96 insertions(+), 59 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 7888144..992a58e 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml @@ -195,72 +195,103 @@ 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, - rtus.isOnLine, - com.rtu_addr AS rtuAddr, - com.param ->> '$.icCardNo' AS vcNum, - (SELECT param ->> '$.orderNo' AS orderNo + 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 + 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 > 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 - 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', isOnLine BOOLEAN PATH '$.isOnLine' - ) + ) ) 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.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鑾峰彇璇ュ彇姘村彛鏈叧闃�鍙傛暟--> @@ -297,8 +328,6 @@ SELECT COUNT(*) AS recordCount FROM rm_command_history his INNER JOIN pr_intake inta ON inta.id = his.intake_id - LEFT JOIN se_client cli ON cli.id = his.operator - LEFT JOIN ba_user user ON user.id = his.operator <where> <if test="intakeId != null"> AND his.intake_id = #{intakeId} @@ -318,17 +347,17 @@ <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鍛戒护鏃ュ織鍘嗗彶璁板綍--> <select id="getCommandHistories" resultType="com.dy.pipIrrGlobal.voRm.VoCommand"> SELECT his.com_id AS comId, - his.command_name AS commandName, + CONCAT(his.command_name, '(', his.command_code, ')') AS commandName, inta.name AS intakeName, his.rtu_addr AS rtuAddr, - his.protocol, + his.protocol AS protocol, his.send_time AS sendTime, his.result_time AS resultTime, (CASE WHEN his.result = 1 THEN '鎴愬姛' ELSE '澶辫触' - END) AS result, - his.result_text, + END) AS state, + his.result_text AS result, IFNULL(cli.name, user.name) AS userName FROM rm_command_history his INNER JOIN pr_intake inta ON inta.id = his.intake_id @@ -349,11 +378,19 @@ AND his.send_time BETWEEN #{timeStart} AND #{timeStop} </if> </where> - ORDER BY his.send_time DESC + ORDER BY his.com_id DESC <trim prefix="limit "> <if test="start != null and count != null"> #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER} </if> </trim> </select> + + <!--鏍规嵁鍛戒护鏃ュ織ID鑾峰彇棰勭害鏃堕棿锛屽悜铏氭嫙鍗″啓寮�闃�鏃堕棿鐢�--> + <select id="getTimeByCommId" resultType="java.lang.String"> + SELECT + CONCAT(param ->> '$.year', '-', param ->> '$.month', '-', param ->> '$.day', ' ', param ->> '$.hour', ':', param ->> '$.minute', ':00') AS openTime + FROM rm_command_history + WHERE com_id = #{commId} + </select> </mapper> \ No newline at end of file -- Gitblit v1.8.0