zhubaomin
2025-03-26 4c78c3a6fc3fe5fbbcabc85465612a799d98587d
pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml
@@ -5,19 +5,19 @@
    <!--@mbg.generated-->
    <!--@Table ir_irrigate_plan-->
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="project_id" jdbcType="BIGINT" property="projectId" />
    <result column="plan_name" jdbcType="VARCHAR" property="planName" />
    <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, 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-->
@@ -33,14 +33,14 @@
  </delete>
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoIr.IrIrrigatePlan">
    <!--@mbg.generated-->
    insert into ir_irrigate_plan (id, project_id, plan_name,
    insert into ir_irrigate_plan (id, plan_name,
      startup_mode, plan_start_time, plan_stop_time, 
      plan_state, executing_state, deleted
      )
    values (#{id,jdbcType=BIGINT}, #{projectId,jdbcType=BIGINT}, #{planName,jdbcType=VARCHAR},
      duration, plan_state, executing_state,
      deleted)
    values (#{id,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-->
@@ -48,9 +48,6 @@
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">
        id,
      </if>
      <if test="projectId != null">
        project_id,
      </if>
      <if test="planName != null">
        plan_name,
@@ -63,6 +60,9 @@
      </if>
      <if test="planStopTime != null">
        plan_stop_time,
      </if>
      <if test="duration != null">
        duration,
      </if>
      <if test="planState != null">
        plan_state,
@@ -78,9 +78,6 @@
      <if test="id != null">
        #{id,jdbcType=BIGINT},
      </if>
      <if test="projectId != null">
        #{projectId,jdbcType=BIGINT},
      </if>
      <if test="planName != null">
        #{planName,jdbcType=VARCHAR},
      </if>
@@ -92,6 +89,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},
@@ -108,9 +108,6 @@
    <!--@mbg.generated-->
    update ir_irrigate_plan
    <set>
      <if test="projectId != null">
        project_id = #{projectId,jdbcType=BIGINT},
      </if>
      <if test="planName != null">
        plan_name = #{planName,jdbcType=VARCHAR},
      </if>
@@ -122,6 +119,9 @@
      </if>
      <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},
@@ -138,109 +138,171 @@
  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoIr.IrIrrigatePlan">
    <!--@mbg.generated-->
    update ir_irrigate_plan
    set project_id = #{projectId,jdbcType=BIGINT},
      plan_name = #{planName,jdbcType=VARCHAR},
    set plan_name = #{planName,jdbcType=VARCHAR},
      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}
    where id = #{id,jdbcType=BIGINT}
  </update>
  <!--发布指定的灌溉计划-->
  <update id="publishIrrigatePlan">
    UPDATE ir_irrigate_plan SET plan_state = 2 WHERE id = #{planId}
  </update>
  <!--根据指定的计划ID获取启动模式-->
  <select id="getStartupMode" resultType="java.lang.Byte">
    SELECT
        startup_mode AS startupMode
    FROM ir_irrigate_plan
    WHERE id = #{planId}
  </select>
  <!--根据指定的条件获取计划数量-->
  <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>
<!--  <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="planName != null and planName != ''">-->
<!--        AND plan.plan_name LIKE CONCAT('%', #{planName}, '%')-->
<!--      </if>-->
      <if test="startupMode != null">
        AND plan.startup_mode = #{startupMode}
      </if>
<!--      <if test="startupMode != null">-->
<!--        AND plan.startup_mode = #{startupMode}-->
<!--      </if>-->
      <if test="planState != null">
        AND plan.plan_state = #{planState}
      </if>
<!--      <if test="planState != null">-->
<!--        AND plan.plan_state = #{planState}-->
<!--      </if>-->
      <if test="executingState != null">
        AND plan.executing_state = #{executingState}
      </if>
    </where>
  </select>
<!--      <if test="executingState != null">-->
<!--        AND plan.executing_state = #{executingState}-->
<!--      </if>-->
<!--    </where>-->
<!--  </select>-->
  <!--根据指定的条件获取计划列表-->
  <select id="getIrrigatePlans" resultType="com.dy.pipIrrGlobal.voIr.VoIrrigatePlan">
<!--  <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,-->
<!--        plan.duration AS duration,-->
<!--        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>-->
  <!--根据计划ID获取计划简单信息-->
  <select id="getPlanSimple" resultType="com.dy.pipIrrGlobal.voIr.VoPlanSimple">
    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
        plan.startup_mode AS startupMode,
        plan.plan_start_time AS planStartTime,
        plan.duration AS duration
    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>
    WHERE plan.id = #{planId}
      AND plan.deleted = 0 AND plan_state = 1
    LIMIT 1
  </select>
  <!--根据计划ID更新计划信息(起止时间、计划状态)-->
  <update id="updatePlanTimes">
    UPDATE ir_irrigate_plan
    SET plan_start_time = #{planStartTime}, plan_stop_time = #{planStopTime}, plan_state = 2
    WHERE id = #{planId}
  </update>
  <!--获取未完成的计划列表,小程序计划列表页使用-->
  <select id="getNotCompletePlans" resultType="com.dy.pipIrrGlobal.voIr.VoPlans">
    SELECT
      id AS planId,
      plan_name AS planName,
      startup_mode AS startupMode,
      plan_start_time AS planStartTime,
      plan_stop_time AS planStopTime,
      duration,
      IF(plan_state = 1,'草稿',
         IF(NOW() &lt; plan_start_time, '未执行',
            IF(NOW() &gt;= plan_start_time AND NOW() &lt; plan_stop_time, '执行中', '已完成')
        )
      ) AS planState
    FROM ir_irrigate_plan plan
    WHERE deleted = 0 AND (plan_state = 1 OR NOW() &lt; plan_stop_time)
    ORDER BY plan_state DESC
  </select>
  <!--获取已完成的计划列表,小程序计划列表页使用-->
  <select id="getCompletedPlans" resultType="com.dy.pipIrrGlobal.voIr.VoPlans">
    SELECT
      id AS planId,
      plan_name AS planName,
      startup_mode AS startupMode,
      plan_start_time AS planStartTime,
      plan_stop_time AS planStopTime,
      duration,
      IF(plan_state = 1,'草稿',
         IF(NOW() &lt; plan_start_time, '未执行',
            IF(NOW() &gt;= plan_start_time AND NOW() &lt; plan_stop_time, '执行中', '已完成')
        )
      ) AS planState
    FROM ir_irrigate_plan plan
    WHERE deleted = 0 AND (plan_state = 2 AND NOW() &gt;= plan_stop_time)
    ORDER BY plan_state DESC
  </select>
</mapper>