liurunyu
2025-02-26 5599ea07c557223e5a8f0acae755de852d2fe008
Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV
7个文件已修改
2个文件已添加
566 ■■■■ 已修改文件
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIrrigatePlanMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoIr/IrIrrigatePlan.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoIrrigatePlan.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateHistoryMapper.xml 221 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateLastMapper.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanCtrl.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanSv.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/qo/QoIrrigatePlan.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
}
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;
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoIrrigatePlan.java
New file
@@ -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;
}
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>
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>
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>
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());
        }
    }
}
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
pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/qo/QoIrrigatePlan.java
New file
@@ -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;
}