<?xml version="1.0" encoding="UTF-8"?>
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<mapper namespace="com.dy.pipIrrGlobal.daoRm.RmCommandHistoryMapper">
|
<resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoRm.RmCommandHistory">
|
<!--@mbg.generated-->
|
<!--@Table rm_command_history-->
|
<id column="com_id" jdbcType="BIGINT" property="comId"/>
|
<result column="command_code" jdbcType="VARCHAR" property="commandCode"/>
|
<result column="command_name" jdbcType="VARCHAR" property="commandName"/>
|
<result column="intake_id" jdbcType="BIGINT" property="intakeId"/>
|
<result column="rtu_addr" jdbcType="VARCHAR" property="rtuAddr"/>
|
<result column="protocol" jdbcType="VARCHAR" property="protocol"/>
|
<result column="param" property="param" jdbcType="JAVA_OBJECT"
|
typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
|
<result column="send_time" jdbcType="TIMESTAMP" property="sendTime"/>
|
<result column="operator" jdbcType="BIGINT" property="operator"/>
|
<result column="result" jdbcType="TINYINT" property="result"/>
|
<result column="result_time" jdbcType="TIMESTAMP" property="resultTime"/>
|
<result column="result_text" jdbcType="LONGVARCHAR" property="resultText"/>
|
</resultMap>
|
<sql id="Base_Column_List">
|
<!--@mbg.generated-->
|
com_id,
|
command_code,
|
command_name,
|
intake_id,
|
rtu_addr,
|
protocol,
|
param,
|
send_time,
|
`operator`,
|
`result`,
|
result_time,
|
result_text
|
</sql>
|
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
|
<!--@mbg.generated-->
|
select
|
<include refid="Base_Column_List"/>
|
from rm_command_history
|
where com_id = #{comId,jdbcType=BIGINT}
|
</select>
|
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
|
<!--@mbg.generated-->
|
delete
|
from rm_command_history
|
where com_id = #{comId,jdbcType=BIGINT}
|
</delete>
|
<insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmCommandHistory">
|
<!--@mbg.generated-->
|
insert into rm_command_history (com_id, command_code, command_name,
|
intake_id, rtu_addr, protocol,
|
param, send_time, `operator`,
|
`result`, result_time, result_text)
|
values (#{comId,jdbcType=BIGINT}, #{commandCode,jdbcType=VARCHAR}, #{commandName,jdbcType=VARCHAR},
|
#{intakeId,jdbcType=BIGINT}, #{rtuAddr,jdbcType=VARCHAR}, #{protocol,jdbcType=VARCHAR},
|
#{param,jdbcType= JAVA_OBJECT, typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler},
|
#{sendTime,jdbcType=TIMESTAMP}, #{operator,jdbcType=BIGINT},
|
#{result,jdbcType=TINYINT}, #{resultTime,jdbcType=TIMESTAMP}, #{resultText,jdbcType=LONGVARCHAR})
|
</insert>
|
<insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmCommandHistory">
|
<!--@mbg.generated-->
|
insert into rm_command_history
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
<if test="comId != null">
|
com_id,
|
</if>
|
<if test="commandCode != null">
|
command_code,
|
</if>
|
<if test="commandName != null">
|
command_name,
|
</if>
|
<if test="intakeId != null">
|
intake_id,
|
</if>
|
<if test="rtuAddr != null">
|
rtu_addr,
|
</if>
|
<if test="protocol != null">
|
protocol,
|
</if>
|
<if test="param != null">
|
param,
|
</if>
|
<if test="sendTime != null">
|
send_time,
|
</if>
|
<if test="operator != null">
|
`operator`,
|
</if>
|
<if test="result != null">
|
`result`,
|
</if>
|
<if test="resultTime != null">
|
result_time,
|
</if>
|
<if test="resultText != null">
|
result_text,
|
</if>
|
</trim>
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
<if test="comId != null">
|
#{comId,jdbcType=BIGINT},
|
</if>
|
<if test="commandCode != null">
|
#{commandCode,jdbcType=VARCHAR},
|
</if>
|
<if test="commandName != null">
|
#{commandName,jdbcType=VARCHAR},
|
</if>
|
<if test="intakeId != null">
|
#{intakeId,jdbcType=BIGINT},
|
</if>
|
<if test="rtuAddr != null">
|
#{rtuAddr,jdbcType=VARCHAR},
|
</if>
|
<if test="protocol != null">
|
#{protocol,jdbcType=VARCHAR},
|
</if>
|
<if test="param != null">
|
#{param,jdbcType= JAVA_OBJECT, typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler},
|
</if>
|
<if test="sendTime != null">
|
#{sendTime,jdbcType=TIMESTAMP},
|
</if>
|
<if test="operator != null">
|
#{operator,jdbcType=BIGINT},
|
</if>
|
<if test="result != null">
|
#{result,jdbcType=TINYINT},
|
</if>
|
<if test="resultTime != null">
|
#{resultTime,jdbcType=TIMESTAMP},
|
</if>
|
<if test="resultText != null">
|
#{resultText,jdbcType=LONGVARCHAR},
|
</if>
|
</trim>
|
</insert>
|
<update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmCommandHistory">
|
<!--@mbg.generated-->
|
update rm_command_history
|
<set>
|
<if test="commandCode != null">
|
command_code = #{commandCode,jdbcType=VARCHAR},
|
</if>
|
<if test="commandName != null">
|
command_name = #{commandName,jdbcType=VARCHAR},
|
</if>
|
<if test="intakeId != null">
|
intake_id = #{intakeId,jdbcType=BIGINT},
|
</if>
|
<if test="rtuAddr != null">
|
rtu_addr = #{rtuAddr,jdbcType=VARCHAR},
|
</if>
|
<if test="protocol != null">
|
protocol = #{protocol,jdbcType=VARCHAR},
|
</if>
|
<if test="param != null">
|
param = #{param,jdbcType= JAVA_OBJECT, typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler},
|
</if>
|
<if test="sendTime != null">
|
send_time = #{sendTime,jdbcType=TIMESTAMP},
|
</if>
|
<if test="operator != null">
|
`operator` = #{operator,jdbcType=BIGINT},
|
</if>
|
<if test="result != null">
|
`result` = #{result,jdbcType=TINYINT},
|
</if>
|
<if test="resultTime != null">
|
result_time = #{resultTime,jdbcType=TIMESTAMP},
|
</if>
|
<if test="resultText != null">
|
result_text = #{resultText,jdbcType=LONGVARCHAR},
|
</if>
|
</set>
|
where com_id = #{comId,jdbcType=BIGINT}
|
</update>
|
<update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoRm.RmCommandHistory">
|
<!--@mbg.generated-->
|
update rm_command_history
|
set command_code = #{commandCode,jdbcType=VARCHAR},
|
command_name = #{commandName,jdbcType=VARCHAR},
|
intake_id = #{intakeId,jdbcType=BIGINT},
|
rtu_addr = #{rtuAddr,jdbcType=VARCHAR},
|
protocol = #{protocol,jdbcType=VARCHAR},
|
param = #{param,jdbcType= JAVA_OBJECT, typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler},
|
send_time = #{sendTime,jdbcType=TIMESTAMP},
|
`operator` = #{operator,jdbcType=BIGINT},
|
`result` = #{result,jdbcType=TINYINT},
|
result_time = #{resultTime,jdbcType=TIMESTAMP},
|
result_text = #{resultText,jdbcType=LONGVARCHAR}
|
where com_id = #{comId,jdbcType=BIGINT}
|
</update>
|
|
<!--根据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,
|
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 > 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>
|
|
|
|
<!--根据操作员ID获取未关阀记录(包含在线情况)-->
|
<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 > 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 > 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.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
|
</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>
|
|
<!--根据取水口ID获取该取水口未关阀参数-->
|
<select id="getUncloseParam" resultType="com.dy.pipIrrGlobal.voRm.VoUnclosedParam">
|
SELECT com.rtu_addr AS rtuAddr,
|
com.param ->> '$.orderNo' AS orderNo,
|
com.param ->> '$.icCardNo' AS vcNum
|
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":"620201000029","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 (com.command_code = '92' OR com.command_code = 'A2' OR com.command_code = '97')
|
AND con.intakeId = #{intakeId}
|
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'
|
)
|
ORDER BY com.send_time DESC
|
LIMIT 0,1
|
</select>
|
|
<!--根据指定条件获取命令日志历史记录总数-->
|
<select id="getCommandHistoriesCount" resultType="java.lang.Long">
|
SELECT COUNT(*) AS recordCount
|
FROM rm_command_history his
|
INNER JOIN pr_intake inta ON inta.id = his.intake_id
|
<where>
|
<if test="intakeId != null">
|
AND his.intake_id = #{intakeId}
|
</if>
|
<if test="commandName != null and commandName != ''">
|
AND his.command_name LIKE CONCAT('%', #{commandName}, '%')
|
</if>
|
<if test="result != null">
|
AND his.result = #{result}
|
</if>
|
<if test="timeStart != null and timeStop != null">
|
AND his.send_time BETWEEN #{timeStart} AND #{timeStop}
|
</if>
|
</where>
|
</select>
|
|
<!--根据指定条件获取命令日志历史记录-->
|
<select id="getCommandHistories" resultType="com.dy.pipIrrGlobal.voRm.VoCommand">
|
SELECT his.com_id AS comId,
|
CONCAT(his.command_name, '(', his.command_code, ')') AS commandName,
|
inta.name AS intakeName,
|
his.rtu_addr AS rtuAddr,
|
his.protocol AS protocol,
|
his.send_time AS sendTime,
|
his.result_time AS resultTime,
|
(CASE
|
WHEN his.result = 1 THEN '成功'
|
ELSE '失败'
|
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
|
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}
|
</if>
|
<if test="commandName != null and commandName != ''">
|
AND his.command_name LIKE CONCAT('%', #{commandName}, '%')
|
</if>
|
<if test="result != null">
|
AND his.result = #{result}
|
</if>
|
|
<if test="timeStart != null and timeStop != null">
|
AND his.send_time BETWEEN #{timeStart} AND #{timeStop}
|
</if>
|
</where>
|
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>
|