From e67870fff62635cd14beb0d5988f08aeef4b22fa Mon Sep 17 00:00:00 2001
From: zhubaomin <zhubaomin>
Date: 星期一, 07 四月 2025 21:27:06 +0800
Subject: [PATCH] 添加远程关阀式终止灌溉计划,未测试

---
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml |  583 ++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 389 insertions(+), 194 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 9523312..14eefe6 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml
@@ -1,210 +1,405 @@
 <?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="id" jdbcType="BIGINT" property="id" />
-    <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" property="resultText" jdbcType="JAVA_OBJECT" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" />
-  </resultMap>
-  <sql id="Base_Column_List">
-    <!--@mbg.generated-->
-    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 id = #{id,jdbcType=BIGINT}
-  </select>
-  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
-    <!--@mbg.generated-->
-    delete from rm_command_history
-    where id = #{id,jdbcType=BIGINT}
-  </delete>
-  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmCommandHistory">
-    <!--@mbg.generated-->
-    insert into rm_command_history (id, command_code, command_name, 
-      intake_id, rtu_addr, protocol, param,
-      send_time, `operator`, `result`, 
-      result_time, result_text)
-    values (#{id,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= JAVA_OBJECT, typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler})
-  </insert>
-  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmCommandHistory">
-    <!--@mbg.generated-->
-    insert into rm_command_history
-    <trim prefix="(" suffix=")" suffixOverrides=",">
-      <if test="id != null">
-        id,
-      </if>
-      <if test="commandCode != null">
+    <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,
-      </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="id != null">
-        #{id,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= JAVA_OBJECT, typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler},
-      </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= JAVA_OBJECT, typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler},
-      </if>
-    </set>
-    where id = #{id,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= JAVA_OBJECT, typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler}
-    where id = #{id,jdbcType=BIGINT}
-  </update>
+        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>
 
-  <!--鏍规嵁鎿嶄綔鍛業D鑾峰彇鏈叧闃�璁板綍锛堝寘鍚湪绾挎儏鍐碉級-->
-  <select id="getUnclosedValves" resultType="com.dy.pipIrrGlobal.voRm.VoUnclosedValve">
-    SELECT
-        com.command_code AS commandCode,
-        inta.name AS intakeNum,
-        rtus.isOnLine,
-        com.rtuAddr,
-        com.param ->>'$.orderNo' AS orderNo,
-        com.param ->>'$.icCardNo' AS vcNum,
-        com.send_time AS openTime
-    FROM rm_command_history com
-        INNER JOIN pr_controller con ON com.rtuAddr = 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'
+    <!--鏍规嵁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,
+            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>
+
+    <!--鏍规嵁鍙栨按鍙D鑾峰彇璇ュ彇姘村彛鏈叧闃�鍙傛暟-->
+    <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.rtuAddr = rtus.rtuAddr
-    WHERE (com.command_code = '92' OR com.command_code = 'A2') AND com.operator = #{operator}
-    AND NOT EXISTS (SELECT * FROM rm_command_history WHERE (command_code = '93' OR command_code = 'A3') AND param ->>'$.orderNo' = com.param ->>'$.orderNo')
-    ORDER BY com.send_time DESC
-  </select>
+            ) 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>
+
+    <!--鏍规嵁鍛戒护鏃ュ織ID鑾峰彇鍙栨按鍙e強铏氭嫙鍗′俊鎭紝缁堟鐏屾簤璁″垝鏃朵娇鐢紝鐢ㄦ潵鎵ц杩滅▼鍏抽榾-->
+    <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>
\ No newline at end of file

--
Gitblit v1.8.0