| | |
| | | where com_id = #{comId,jdbcType=BIGINT} |
| | | </update> |
| | | |
| | | <!--根据操作员ID获取未关阀记录(包含在线情况)--> |
| | | <!--根据operator获取未关阀的RTU地址及虚拟卡编号数据对,获取未关阀记录使用--> |
| | | <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, |
| | | IFNULL(rtus.isOnLine, false) AS isOnLine, |
| | | com.rtu_addr AS rtuAddr, |
| | | com.param ->> '$.icCardNo' AS vcNum, |
| | | ( |
| | |
| | | ) AS orderNo, |
| | | 'toClose' AS state, |
| | | CASE |
| | | WHEN com.command_code = 'A1' OR com.command_code = 'A2' THEN 0 |
| | | WHEN com.command_code = 'A1' OR com.command_code = 'A2' THEN 1 |
| | | ELSE 0 |
| | | END AS planned, |
| | | com.send_time AS sendTime |
| | | 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}]',--> |
| | | <!--'[{"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.operator = #{operator} |
| | | AND (com.protocol = 'p206V1_0_1' 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 NOT EXISTS( |
| | | SELECT * FROM rm_command_history |
| | | WHERE (result IS NULL OR result = 1) |
| | | AND (com.protocol = 'p206V1_0_1' AND (command_code = '93' OR command_code = '98' OR command_code = '00')) |
| | | AND param ->> '$.orderNo' = com.param ->> '$.orderNo' |
| | | ) |
| | | 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 |
| | | 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> |
| | | |
| | | <!--根据取水口ID获取该取水口未关阀参数--> |
| | |
| | | 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} |
| | |
| | | <!--根据指定条件获取命令日志历史记录--> |
| | | <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 |
| | |
| | | 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> |
| | | |
| | | <!--根据命令日志ID获取取水口及虚拟卡信息,终止灌溉计划时使用,用来执行远程关阀--> |
| | | <select id="getIntakeVc" resultType="com.dy.pipIrrGlobal.voRm.VoIntakeVc"> |
| | | SELECT |
| | | intake_id AS intakeId, |
| | | (SELECT id FROM se_virtual_card WHERE vc_num = param ->> '$.icCardNo') AS vcId |
| | | FROM rm_command_history WHERE com_id = #{commandId} |
| | | LIMIT 0, 1 |
| | | </select> |
| | | </mapper> |