From 5599ea07c557223e5a8f0acae755de852d2fe008 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期三, 26 二月 2025 17:43:46 +0800
Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV

---
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIrrigatePlanMapper.java                    |   22 ++
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateLastMapper.xml                                 |    8 
 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/qo/QoIrrigatePlan.java |   42 ++++
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml                                   |  113 ++++++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanCtrl.java  |   24 ++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoIrrigatePlan.java                           |   71 +++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanSv.java    |   24 ++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoIr/IrIrrigatePlan.java                         |   41 ++-
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateHistoryMapper.xml                              |  221 +++++++++++-----------
 9 files changed, 421 insertions(+), 145 deletions(-)

diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIrrigatePlanMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIrrigatePlanMapper.java
index dacdfb0..697f90e 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIrrigatePlanMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIrrigatePlanMapper.java
@@ -2,12 +2,16 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dy.pipIrrGlobal.pojoIr.IrIrrigatePlan;
+import com.dy.pipIrrGlobal.voIr.VoIrrigatePlan;
 import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * @author ZhuBaoMin
- * @date 2025-02-20 15:33
- * @LastEditTime 2025-02-20 15:33
+ * @date 2025-02-25 14:59
+ * @LastEditTime 2025-02-25 14:59
  * @Description
  */
 
@@ -31,4 +35,18 @@
      * @return
      */
     int publishIrrigatePlan(Long planId);
+
+    /**
+     * 鏍规嵁鎸囧畾鐨勬潯浠惰幏鍙栬鍒掓暟閲�
+     * @param params
+     * @return
+     */
+    Long getIrrigatePlanCount(Map<?, ?> params);
+
+    /**
+     * 鏍规嵁鎸囧畾鐨勬潯浠惰幏鍙栬鍒掑垪琛�
+     * @param params
+     * @return
+     */
+    List<VoIrrigatePlan> getIrrigatePlans(Map<?, ?> params);
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoIr/IrIrrigatePlan.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoIr/IrIrrigatePlan.java
index f0c2679..90c7951 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoIr/IrIrrigatePlan.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoIr/IrIrrigatePlan.java
@@ -30,54 +30,59 @@
     public static final long serialVersionUID = 202502201543001L;
 
     /**
-    * 涓婚敭
-    */
+     * 涓婚敭
+     */
     @JSONField(serializeUsing= ObjectWriterImplToString.class)
     @TableId(type = IdType.INPUT)
     private Long id;
 
     /**
-    * 椤圭洰ID
-    */
+     * 椤圭洰ID
+     */
     private Long projectId;
 
     /**
-    * 璁″垝鍚嶇О
-    */
+     * 璁″垝鍚嶇О
+     */
     @NotBlank(message = "璁″垝鍚嶇О涓嶈兘涓虹┖")
     private String planName;
 
     /**
-    * 璁″垝鍚姩妯″紡;1-鎵嬪姩鍚姩锛�2-鑷姩鍚姩
-    */
+     * 璁″垝鍚姩妯″紡;1-鎵嬪姩鍚姩锛�2-鑷姩鍚姩
+     */
     @NotNull(message = "璁″垝鍚姩妯″紡涓嶈兘涓虹┖")
     private Byte startupMode;
 
     /**
-    * 鐏屾簤寮�濮嬫椂闂�;绮剧‘鍒板垎
-    */
+     * 鐏屾簤寮�濮嬫椂闂�;绮剧‘鍒板垎
+     */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date planStartTime;
 
     /**
-    * 鐏屾簤缁撴潫鏃堕棿;绮剧‘鍒板垎
-    */
+     * 鐏屾簤缁撴潫鏃堕棿;绮剧‘鍒板垎
+     */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date planStopTime;
 
     /**
-    * 璁″垝鐘舵��;1-鑽夌锛�2-宸插彂甯�
-    */
+     * 鐏屾簤鏃堕暱;鍒嗛挓
+     */
+    private Integer duration;
+
+    /**
+     * 璁″垝鐘舵��;1-鑽夌锛�2-宸插彂甯�
+     */
     private Byte planState;
 
     /**
-    * 鎵ц鐘舵��;1-鏈墽琛岋紝2-鎵ц涓紝3-宸叉殏鍋滐紝4-宸茬粓姝紝5-宸插畬鎴�
-    */
+     * 鎵ц鐘舵��;1-鏈墽琛岋紝2-鎵ц涓紝3-宸叉殏鍋滐紝4-宸茬粓姝紝5-宸插畬鎴�
+     */
     private Byte executingState;
 
     /**
-    * 閫昏緫鍒犻櫎鏍囪瘑;鏈垹闄や负0锛屽凡鍒犻櫎涓哄垹闄ゆ椂闂�
-    */
+     * 閫昏緫鍒犻櫎鏍囪瘑;鏈垹闄や负0锛屽凡鍒犻櫎涓哄垹闄ゆ椂闂�
+     */
     private Long deleted;
 
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoIrrigatePlan.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoIrrigatePlan.java
new file mode 100644
index 0000000..3eb8770
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoIrrigatePlan.java
@@ -0,0 +1,71 @@
+package com.dy.pipIrrGlobal.voIr;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.dy.common.po.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2025-02-24 16:51
+ * @LastEditTime 2025-02-24 16:51
+ * @Description 鐏屾簤璁″垝瑙嗗浘瀵硅薄
+ */
+
+@Data
+@JsonPropertyOrder({"planId", "projectName", "planName", "startupMode", "startTime", "stopTime", "duration", "planState", "executingState"})
+public class VoIrrigatePlan implements BaseEntity {
+    public static final long serialVersionUID = 202502241652001L;
+
+    /**
+     * 璁″垝ID
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long planId;
+
+    /**
+     * 鎵�灞為」鐩悕绉�
+     */
+    private String projectName;
+
+    /**
+     * 璁″垝鍚嶇О
+     */
+    private String planName;
+
+    /**
+     * 璁″垝鍚姩妯″紡锛�1-鎵嬪姩鍚姩锛�2-鑷姩鍚姩
+     */
+    private String startupMode;
+
+    /**
+     * 鐏屾簤寮�濮嬫椂闂达紱绮剧‘鍒板垎
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
+    private Date startTime;
+
+    /**
+     * 鐏屾簤缁撴潫鏃堕棿锛涚簿纭埌鍒�
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
+    private Date stopTime;
+
+    /**
+     * 鐏屾簤鏃堕暱
+     */
+    private Integer duration;
+
+    /**
+     * 璁″垝鐘舵�侊紱1-鑽夌锛�2-宸插彂甯�
+     */
+    private String planState;
+
+    /**
+     * 璁″垝鎵ц鐘舵�侊紱1-鏈墽琛岋紝2-鎵ц涓紝3-宸叉殏鍋滐紝4-宸茬粓姝紝5-宸插畬鎴�
+     */
+    private String executingState;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml
index d0dcde5..bbf7b56 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml
@@ -10,14 +10,15 @@
     <result column="startup_mode" jdbcType="TINYINT" property="startupMode" />
     <result column="plan_start_time" jdbcType="TIMESTAMP" property="planStartTime" />
     <result column="plan_stop_time" jdbcType="TIMESTAMP" property="planStopTime" />
+    <result column="duration" jdbcType="INTEGER" property="duration" />
     <result column="plan_state" jdbcType="TINYINT" property="planState" />
     <result column="executing_state" jdbcType="TINYINT" property="executingState" />
     <result column="deleted" jdbcType="BIGINT" property="deleted" />
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
-    id, project_id, plan_name, startup_mode, plan_start_time, plan_stop_time, plan_state, 
-    executing_state, deleted
+    id, project_id, plan_name, startup_mode, plan_start_time, plan_stop_time, duration, 
+    plan_state, executing_state, deleted
   </sql>
   <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
     <!--@mbg.generated-->
@@ -35,12 +36,12 @@
     <!--@mbg.generated-->
     insert into ir_irrigate_plan (id, project_id, plan_name, 
       startup_mode, plan_start_time, plan_stop_time, 
-      plan_state, executing_state, deleted
-      )
+      duration, plan_state, executing_state, 
+      deleted)
     values (#{id,jdbcType=BIGINT}, #{projectId,jdbcType=BIGINT}, #{planName,jdbcType=VARCHAR}, 
       #{startupMode,jdbcType=TINYINT}, #{planStartTime,jdbcType=TIMESTAMP}, #{planStopTime,jdbcType=TIMESTAMP}, 
-      #{planState,jdbcType=TINYINT}, #{executingState,jdbcType=TINYINT}, #{deleted,jdbcType=BIGINT}
-      )
+      #{duration,jdbcType=INTEGER}, #{planState,jdbcType=TINYINT}, #{executingState,jdbcType=TINYINT}, 
+      #{deleted,jdbcType=BIGINT})
   </insert>
   <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoIr.IrIrrigatePlan">
     <!--@mbg.generated-->
@@ -63,6 +64,9 @@
       </if>
       <if test="planStopTime != null">
         plan_stop_time,
+      </if>
+      <if test="duration != null">
+        duration,
       </if>
       <if test="planState != null">
         plan_state,
@@ -92,6 +96,9 @@
       </if>
       <if test="planStopTime != null">
         #{planStopTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="duration != null">
+        #{duration,jdbcType=INTEGER},
       </if>
       <if test="planState != null">
         #{planState,jdbcType=TINYINT},
@@ -123,6 +130,9 @@
       <if test="planStopTime != null">
         plan_stop_time = #{planStopTime,jdbcType=TIMESTAMP},
       </if>
+      <if test="duration != null">
+        duration = #{duration,jdbcType=INTEGER},
+      </if>
       <if test="planState != null">
         plan_state = #{planState,jdbcType=TINYINT},
       </if>
@@ -143,6 +153,7 @@
       startup_mode = #{startupMode,jdbcType=TINYINT},
       plan_start_time = #{planStartTime,jdbcType=TIMESTAMP},
       plan_stop_time = #{planStopTime,jdbcType=TIMESTAMP},
+      duration = #{duration,jdbcType=INTEGER},
       plan_state = #{planState,jdbcType=TINYINT},
       executing_state = #{executingState,jdbcType=TINYINT},
       deleted = #{deleted,jdbcType=BIGINT}
@@ -153,4 +164,94 @@
   <update id="publishIrrigatePlan">
     UPDATE ir_irrigate_plan SET plan_state = 2 WHERE id = #{planId}
   </update>
+
+  <!--鏍规嵁鎸囧畾鐨勬潯浠惰幏鍙栬鍒掓暟閲�-->
+  <select id="getIrrigatePlanCount" resultType="java.lang.Long">
+    SELECT COUNT(*)
+    FROM ir_irrigate_plan plan
+    INNER JOIN ir_project pro ON pro.id = plan.project_id
+    <where>
+      AND plan.deleted = 0
+      AND pro.deleted = 0
+      <if test="projectName != null and projectName != ''">
+        AND pro.project_name LIKE CONCAT('%', #{projectName}, '%')
+      </if>
+
+      <if test="planName != null and planName != ''">
+        AND plan.plan_name LIKE CONCAT('%', #{planName}, '%')
+      </if>
+
+      <if test="startupMode != null">
+        AND plan.startup_mode = #{startupMode}
+      </if>
+
+      <if test="planState != null">
+        AND plan.plan_state = #{planState}
+      </if>
+
+      <if test="executingState != null">
+        AND plan.executing_state = #{executingState}
+      </if>
+    </where>
+  </select>
+
+  <!--鏍规嵁鎸囧畾鐨勬潯浠惰幏鍙栬鍒掑垪琛�-->
+  <select id="getIrrigatePlans" resultType="com.dy.pipIrrGlobal.voIr.VoIrrigatePlan">
+    SELECT
+    plan.id AS planId,
+    pro.project_name AS projectName,
+    plan.plan_name AS planName,
+    CASE plan.startup_mode
+    WHEN 1 THEN '鎵嬪姩鍚姩'
+    WHEN 2 THEN '鑷姩鍚姩'
+    END AS startupMode,
+    plan.plan_start_time AS startTime,
+    plan.plan_stop_time AS stopTime,
+    CASE plan.plan_state
+    WHEN 1 THEN '鑽夌'
+    WHEN 2 THEN '宸插彂甯�'
+    END AS planState,
+
+    CASE plan.executing_state
+    WHEN 1 THEN
+    '鏈墽琛�'
+    WHEN 2 THEN
+    '鎵ц涓�'
+    WHEN 3 THEN
+    '宸叉殏鍋�'
+    WHEN 4 THEN
+    '宸茬粓姝�'
+    END AS executingState
+    FROM ir_irrigate_plan plan
+    INNER JOIN ir_project pro ON pro.id = plan.project_id
+    <where>
+      AND plan.deleted = 0
+      AND pro.deleted = 0
+      <if test="projectName != null and projectName != ''">
+        AND pro.project_name LIKE CONCAT('%', #{projectName}, '%')
+      </if>
+
+      <if test="planName != null and planName != ''">
+        AND plan.plan_name LIKE CONCAT('%', #{planName}, '%')
+      </if>
+
+      <if test="startupMode != null">
+        AND plan.startup_mode = #{startupMode}
+      </if>
+
+      <if test="planState != null">
+        AND plan.plan_state = #{planState}
+      </if>
+
+      <if test="executingState != null">
+        AND plan.executing_state = #{executingState}
+      </if>
+    </where>
+    ORDER BY plan.plan_state DESC, plan.plan_start_time
+    <trim prefix="limit ">
+      <if test="start != null and count != null">
+        #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
+      </if>
+    </trim>
+  </select>
 </mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateHistoryMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateHistoryMapper.xml
index 5fc59a3..1dad843 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateHistoryMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateHistoryMapper.xml
@@ -350,12 +350,12 @@
         where id = #{id,jdbcType=BIGINT}
     </update>
     <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇璁板綍鎬绘暟-->
-<select id="getRecordCount" resultType="java.lang.Long">
-    select count(*)
-    from rm_alarm_state_history rash
-    Left join pr_intake pint on rash.intake_id = pint.id
-    <where>
-       <if test="alarmState == 1">
+    <select id="getRecordCount" resultType="java.lang.Long">
+        select count(*)
+        from rm_alarm_state_history rash
+                 Left join pr_intake pint on rash.intake_id = pint.id
+        <where>
+            <if test="alarmState == 1">
                 and (
                     alarm_remain_water = 1
                     or alarm0_water_remain = 1
@@ -373,123 +373,122 @@
                     or alarm_battery_volt = 1
                     or alarm_valve = 1
                 )
-       </if>
-       <if test="alarmState == 0">
-           and (
-                alarm_remain_water = 0
-                and alarm0_water_remain = 0
-                and alarm_exceed_year = 0
-                and alarm_water_meter_fault = 0
-                and alarm_loss = 0
-                and alarm_water_meter_break = 0
-                and alarm_ele_meter_fault = 0
-                and alarm0_money_remain = 0
-                and alarm_inner_door = 0
-                and alarm_outer_door = 0
-                and alarm_ele_miss = 0
-                and alarm_ele_exceed = 0
-                and alarm_ele_low_volt = 0
-                and alarm_battery_volt = 0
-                and alarm_valve = 0
-                )
-        </if>
-        <if test="valveState != null">
-            and rash.valve_state = #{valveState,jdbcType=TINYINT}
-        </if>
-        <if test="intakeId != null and intakeId != '' ">
-            and rash.intake_id = #{intakeId}
-        </if>
-        <if test="intakeName != null and intakeName != '' ">
-            and pint.name like CONCAT('%',#{intakeName,jdbcType=VARCHAR},'%')
-        </if>
-        <if test="startDt != null">
-             and rash.dt &gt;= #{startDt,jdbcType=TIMESTAMP}
-        </if>
-        <if test="endDt != null">
-             and rash.dt &lt;= #{endDt,jdbcType=TIMESTAMP}
-        </if>
-        </where>
-    </select>
-    <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇璁板綍-->
-    <select id="getControllerAlarmStateHistory" resultType="com.dy.pipIrrGlobal.voRm.VoControllerAlarmState">
-        select
-        CAST(rash.controller_id AS char)AS controllerId,
-        CAST(rash.intake_id AS char)AS intakeId,
-        pint.name as intakeName,
-        rash.rtu_addr as rtuAddr,
-        rash.dt as dt,
-        rash.valve_state as valveState,
-        rash.alarm_remain_water as alarmRemainWater,
-        rash.alarm0_water_remain as alarm0WaterRemain,
-        rash.alarm_exceed_year as alarmExceedYear,
-        rash.alarm_water_meter_fault as alarmWaterMeterFault,
-        rash.alarm_loss as alarmLoss,
-        rash.alarm_water_meter_break as alarmWaterMeterBreak,
-        rash.alarm_ele_meter_fault as alarmEleMeterFault,
-        rash.alarm0_money_remain as alarm0MoneyRemain,
-        rash.alarm_inner_door as alarmInnerDoor,
-        rash.alarm_outer_door as alarmOuterDoor,
-        rash.alarm_ele_miss as alarmEleMiss,
-        rash.alarm_ele_exceed as alarmEleExceed,
-        rash.alarm_ele_low_volt as alarmEleLowVolt,
-        rash.state_ic_enable as stateIcEnable,
-        rash.alarm_battery_volt as alarmBatteryVolt,
-        rash.alarm_valve as alarmValve,
-        rash.power_type as powerType
-        from rm_alarm_state_history rash
-        Left join pr_intake pint on rash.intake_id = pint.id
-        <where>
-            <if test="alarmState == 1">
-                and (
-                alarm_remain_water = 1
-                or alarm0_water_remain = 1
-                or alarm_exceed_year = 1
-                or alarm_water_meter_fault = 1
-                or alarm_loss = 1
-                or alarm_water_meter_break = 1
-                or alarm_ele_meter_fault = 1
-                or alarm0_money_remain = 1
-                or alarm_inner_door = 1
-                or alarm_outer_door = 1
-                or alarm_ele_miss = 1
-                or alarm_ele_exceed = 1
-                or alarm_ele_low_volt = 1
-                or alarm_battery_volt = 1
-                or alarm_valve = 1
-                )
             </if>
             <if test="alarmState == 0">
                 and (
-                alarm_remain_water = 0
-                and alarm0_water_remain = 0
-                and alarm_exceed_year = 0
-                and alarm_water_meter_fault = 0
-                and alarm_loss = 0
-                and alarm_water_meter_break = 0
-                and alarm_ele_meter_fault = 0
-                and alarm0_money_remain = 0
-                and alarm_inner_door = 0
-                and alarm_outer_door = 0
-                and alarm_ele_miss = 0
-                and alarm_ele_exceed = 0
-                and alarm_ele_low_volt = 0
-                and alarm_battery_volt = 0
-                and alarm_valve = 0
-                )
+                        alarm_remain_water = 0
+                        and alarm0_water_remain = 0
+                        and alarm_exceed_year = 0
+                        and alarm_water_meter_fault = 0
+                        and alarm_loss = 0
+                        and alarm_water_meter_break = 0
+                        and alarm_ele_meter_fault = 0
+                        and alarm0_money_remain = 0
+                        and alarm_inner_door = 0
+                        and alarm_outer_door = 0
+                        and alarm_ele_miss = 0
+                        and alarm_ele_exceed = 0
+                        and alarm_ele_low_volt = 0
+                        and alarm_battery_volt = 0
+                        and alarm_valve = 0
+                    )
             </if>
             <if test="valveState != null">
                 and rash.valve_state = #{valveState,jdbcType=TINYINT}
             </if>
-            <if test="intakeId != null and intakeId != '' ">
+            <if test="intakeId != null and intakeId != ''">
                 and rash.intake_id = #{intakeId}
             </if>
-            <if test="intakeName != null and intakeName != '' ">
-                and pint.name like CONCAT('%',#{intakeName,jdbcType=VARCHAR},'%')
+            <if test="intakeName != null and intakeName != ''">
+                and pint.name like CONCAT('%', #{intakeName,jdbcType=VARCHAR}, '%')
             </if>
-            <if test="startDt != null">
+            <if test="startDt != null and startDt != ''">
                 and rash.dt &gt;= #{startDt,jdbcType=TIMESTAMP}
             </if>
-            <if test="endDt != null">
+            <if test="endDt != null and endDt != ''">
+                and rash.dt &lt;= #{endDt,jdbcType=TIMESTAMP}
+            </if>
+        </where>
+    </select>
+    <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇璁板綍-->
+    <select id="getControllerAlarmStateHistory" resultType="com.dy.pipIrrGlobal.voRm.VoControllerAlarmState">
+        select CAST(rash.controller_id AS char) AS controllerId,
+               CAST(rash.intake_id AS char)     AS intakeId,
+               pint.name                        as intakeName,
+               rash.rtu_addr                    as rtuAddr,
+               rash.dt                          as dt,
+               rash.valve_state                 as valveState,
+               rash.alarm_remain_water          as alarmRemainWater,
+               rash.alarm0_water_remain         as alarm0WaterRemain,
+               rash.alarm_exceed_year           as alarmExceedYear,
+               rash.alarm_water_meter_fault     as alarmWaterMeterFault,
+               rash.alarm_loss                  as alarmLoss,
+               rash.alarm_water_meter_break     as alarmWaterMeterBreak,
+               rash.alarm_ele_meter_fault       as alarmEleMeterFault,
+               rash.alarm0_money_remain         as alarm0MoneyRemain,
+               rash.alarm_inner_door            as alarmInnerDoor,
+               rash.alarm_outer_door            as alarmOuterDoor,
+               rash.alarm_ele_miss              as alarmEleMiss,
+               rash.alarm_ele_exceed            as alarmEleExceed,
+               rash.alarm_ele_low_volt          as alarmEleLowVolt,
+               rash.state_ic_enable             as stateIcEnable,
+               rash.alarm_battery_volt          as alarmBatteryVolt,
+               rash.alarm_valve                 as alarmValve,
+               rash.power_type                  as powerType
+        from rm_alarm_state_history rash
+                 Left join pr_intake pint on rash.intake_id = pint.id
+        <where>
+            <if test="alarmState == 1">
+                and (
+                    alarm_remain_water = 1
+                    or alarm0_water_remain = 1
+                    or alarm_exceed_year = 1
+                    or alarm_water_meter_fault = 1
+                    or alarm_loss = 1
+                    or alarm_water_meter_break = 1
+                    or alarm_ele_meter_fault = 1
+                    or alarm0_money_remain = 1
+                    or alarm_inner_door = 1
+                    or alarm_outer_door = 1
+                    or alarm_ele_miss = 1
+                    or alarm_ele_exceed = 1
+                    or alarm_ele_low_volt = 1
+                    or alarm_battery_volt = 1
+                    or alarm_valve = 1
+                )
+            </if>
+            <if test="alarmState == 0">
+                and (
+                        alarm_remain_water = 0
+                        and alarm0_water_remain = 0
+                        and alarm_exceed_year = 0
+                        and alarm_water_meter_fault = 0
+                        and alarm_loss = 0
+                        and alarm_water_meter_break = 0
+                        and alarm_ele_meter_fault = 0
+                        and alarm0_money_remain = 0
+                        and alarm_inner_door = 0
+                        and alarm_outer_door = 0
+                        and alarm_ele_miss = 0
+                        and alarm_ele_exceed = 0
+                        and alarm_ele_low_volt = 0
+                        and alarm_battery_volt = 0
+                        and alarm_valve = 0
+                    )
+            </if>
+            <if test="valveState != null">
+                and rash.valve_state = #{valveState,jdbcType=TINYINT}
+            </if>
+            <if test="intakeId != null and intakeId != ''">
+                and rash.intake_id = #{intakeId}
+            </if>
+            <if test="intakeName != null and intakeName != ''">
+                and pint.name like CONCAT('%', #{intakeName,jdbcType=VARCHAR}, '%')
+            </if>
+            <if test="startDt != null and startDt != ''">
+                and rash.dt &gt;= #{startDt,jdbcType=TIMESTAMP}
+            </if>
+            <if test="endDt != null and endDt != ''">
                 and rash.dt &lt;= #{endDt,jdbcType=TIMESTAMP}
             </if>
         </where>
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateLastMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateLastMapper.xml
index 53147f1..cb93292 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateLastMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateLastMapper.xml
@@ -396,10 +396,10 @@
       <if test="intakeName != null and intakeName != '' ">
         and pint.name like CONCAT('%',#{intakeName,jdbcType=VARCHAR},'%')
       </if>
-      <if test="startDt != null">
+      <if test="startDt != null and startDt != ''">
         and rasl.dt &gt;= #{startDt,jdbcType=TIMESTAMP}
       </if>
-      <if test="endDt != null">
+      <if test="endDt != null and endDt != ''">
         and rasl.dt &lt;= #{endDt,jdbcType=TIMESTAMP}
       </if>
     </where>
@@ -480,10 +480,10 @@
       <if test="intakeName != null and intakeName != '' ">
         and pint.name like CONCAT('%',#{intakeName,jdbcType=VARCHAR},'%')
       </if>
-      <if test="startDt != null">
+      <if test="startDt != null and startDt != ''">
         and rasl.dt &gt;= #{startDt,jdbcType=TIMESTAMP}
       </if>
-      <if test="endDt != null">
+      <if test="endDt != null and endDt != ''">
         and rasl.dt &lt;= #{endDt,jdbcType=TIMESTAMP}
       </if>
     </where>
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanCtrl.java
index 246fb29..1e9be73 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanCtrl.java
@@ -2,25 +2,25 @@
 
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.common.webUtil.QueryResultVo;
 import com.dy.pipIrrGlobal.pojoIr.IrIrrigatePlan;
 import com.dy.pipIrrGlobal.pojoIr.IrIrrigateSchedule;
 import com.dy.pipIrrGlobal.pojoIr.IrOpeningSchedule;
 import com.dy.pipIrrGlobal.pojoIr.IrPlanOperate;
+import com.dy.pipIrrGlobal.voIr.VoIrrigatePlan;
 import com.dy.pipIrrGlobal.voIr.VoIrrigateSchedule;
 import com.dy.pipIrrWechat.irrigatePlan.dto.IrrigatePlan;
 import com.dy.pipIrrWechat.irrigatePlan.dto.IrrigateSchedule;
 import com.dy.pipIrrWechat.irrigatePlan.dto.PlanSimple;
 import com.dy.pipIrrWechat.irrigatePlan.enums.OperateTypeENUM;
+import com.dy.pipIrrWechat.irrigatePlan.qo.QoIrrigatePlan;
 import jakarta.validation.Valid;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.http.MediaType;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.BindingResult;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.Date;
 import java.util.List;
@@ -171,4 +171,20 @@
         }
         return BaseResponseUtils.buildSuccess();
     }
+
+    /**
+     * 鑾峰彇鐏屾簤璁″垝鍒楄〃
+     * @param vo
+     * @return
+     */
+    @GetMapping(path = "/getIrrigatePlans")
+    public BaseResponse<QueryResultVo<List<VoIrrigatePlan>>> getIrrigatePlans(QoIrrigatePlan vo) {
+        try {
+            QueryResultVo<List<VoIrrigatePlan>> res = irrigatePlanSv.getIrrigatePlans(vo);
+            return BaseResponseUtils.buildSuccess(res);
+        } catch (Exception e) {
+            log.error("鑾峰彇杞亴缁勮褰曞紓甯�", e);
+            return BaseResponseUtils.buildException(e.getMessage());
+        }
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanSv.java
index c0875cf..c75639d 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanSv.java
@@ -1,16 +1,21 @@
 package com.dy.pipIrrWechat.irrigatePlan;
 
+import com.dy.common.webUtil.QueryResultVo;
 import com.dy.pipIrrGlobal.daoIr.*;
 import com.dy.pipIrrGlobal.pojoIr.IrIrrigatePlan;
 import com.dy.pipIrrGlobal.pojoIr.IrIrrigateSchedule;
 import com.dy.pipIrrGlobal.pojoIr.IrOpeningSchedule;
 import com.dy.pipIrrGlobal.pojoIr.IrPlanOperate;
+import com.dy.pipIrrGlobal.voIr.VoIrrigatePlan;
 import com.dy.pipIrrGlobal.voIr.VoIrrigateSchedule;
+import com.dy.pipIrrWechat.irrigatePlan.qo.QoIrrigatePlan;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.common.utils.PojoUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author ZhuBaoMin
@@ -51,6 +56,25 @@
     }
 
     /**
+     * 鏍规嵁鎸囧畾鐨勬潯浠惰幏鍙栬鍒掑垪琛�
+     * @param queryVo
+     * @return
+     */
+    public QueryResultVo<List<VoIrrigatePlan>> getIrrigatePlans(QoIrrigatePlan queryVo) {
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
+
+        Long itemTotal = irrigatePlanMapper.getIrrigatePlanCount(params);
+
+        QueryResultVo<List<VoIrrigatePlan>> rsVo = new QueryResultVo<>();
+        rsVo.pageSize = queryVo.pageSize;
+        rsVo.pageCurr = queryVo.pageCurr;
+
+        rsVo.calculateAndSet(itemTotal, params);
+        rsVo.obj = irrigatePlanMapper.getIrrigatePlans(params);
+        return rsVo;
+    }
+
+    /**
      * 鍙戝竷鎸囧畾鐨勭亴婧夎鍒�
      * @param planId
      * @return
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/qo/QoIrrigatePlan.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/qo/QoIrrigatePlan.java
new file mode 100644
index 0000000..2c10a36
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/qo/QoIrrigatePlan.java
@@ -0,0 +1,42 @@
+package com.dy.pipIrrWechat.irrigatePlan.qo;
+
+import com.dy.common.webUtil.QueryConditionVo;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2025-02-25 15:42
+ * @LastEditTime 2025-02-25 15:42
+ * @Description 鐏屾簤璁″垝鏌ヨ瀵硅薄
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class QoIrrigatePlan extends QueryConditionVo {
+
+    /**
+     * 椤圭洰鍚嶇О
+     */
+    private String projectName;
+
+    /**
+     * 璁″垝鍚嶇О
+     */
+    private String planName;
+
+    /**
+     * 璁″垝鍚姩妯″紡锛�1-鎵嬪姩鍚姩锛�2-鑷姩鍚姩
+     */
+    private Byte startupMode;
+
+    /**
+     * 璁″垝鐘舵�侊紱1-鑽夌锛�2-宸插彂甯�
+     */
+    private Byte planState;
+
+    /**
+     * 鎵ц鐘舵�侊紱1-鏈墽琛岋紝2-鎵ц涓紝3-宸叉殏鍋滐紝4-宸茬粓姝紝5-宸插畬鎴�
+     */
+    private Byte executingState;
+}

--
Gitblit v1.8.0