zhubaomin
2025-04-15 70b2c7a1f5b54cf9157d8fce4d6a9b0f2fadaebe
pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml
@@ -295,8 +295,21 @@
        ) AS planState
    FROM ir_irrigate_plan plan
        INNER JOIN ir_project pro ON pro.id = plan.project_id
    WHERE plan.deleted = 0 AND (plan.plan_state = 1 OR NOW() < plan.plan_stop_time)
    <where>
      AND plan.deleted = 0
      AND (plan.plan_state = 1 OR NOW() &lt; plan.plan_stop_time)
      AND plan.executing_state != 3
    </where>
    ORDER BY plan.plan_state DESC
  </select>
  <!--获取已完成的计划数量-->
  <select id="getCompletedPlansCount" resultType="java.lang.Long">
    SELECT
        COUNT(*) AS recordCount
    FROM ir_irrigate_plan plan
    INNER JOIN ir_project pro ON pro.id = plan.project_id
    WHERE plan.deleted = 0 AND ((plan.plan_state = 2 AND NOW() &gt;= plan.plan_stop_time) OR (plan.executing_state = 3))
  </select>
  <!--获取已完成的计划列表,小程序计划列表页使用-->
@@ -309,15 +322,78 @@
      plan.plan_start_time AS planStartTime,
      plan.plan_stop_time AS planStopTime,
      plan.duration,
      IF(plan.plan_state = 1, 1,
         IF(NOW() &lt; plan.plan_start_time, 2,
            IF(NOW() &gt;= plan.plan_start_time AND NOW() &lt; plan.plan_stop_time, 3, 4)
           )
        ) AS planState
      IF(plan.executing_state = 3, 5, 4) AS planState
    FROM ir_irrigate_plan plan
        INNER JOIN ir_project pro ON pro.id = plan.project_id
    WHERE plan.deleted = 0 AND (plan.plan_state = 2 AND NOW() &gt;= plan.plan_stop_time)
    WHERE plan.deleted = 0 AND ((plan.plan_state = 2 AND NOW() &gt;= plan.plan_stop_time) OR (plan.executing_state = 3))
    ORDER BY plan.plan_state 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="getToTerminatePlan" resultType="java.util.Date">
    SELECT
      plan_start_time AS planStartTime
    FROM ir_irrigate_plan
    <where>
      AND deleted = 0
      AND executing_state != 3
      AND plan_state = 2
      AND NOW() &lt; plan_stop_time
      <if test = "planId != null">
        AND id = #{planId}
      </if>
    </where>
  </select>
  <!--根据计划ID获取计划详情,包括计划名称,项目名,计划开始时间,计划结束时间,计划详情页使用-->
  <select id="getPlanDetails" resultType="com.dy.pipIrrGlobal.voIr.VoPlanDetails">
    SELECT
      plan.plan_name AS planName,
      pro.project_name AS projectName,
      IF(plan.executing_state = 3, '5',
         IF(NOW() &lt; plan.plan_start_time,'2',
            IF(NOW() &lt; plan.plan_stop_time, '3', '4'))) AS state,
      plan.plan_start_time AS planStartTime,
      plan.plan_stop_time AS planStopTime,
      NULL AS groupDetails,
      NULL AS failureCount
    FROM ir_irrigate_plan plan
        INNER JOIN ir_project pro ON pro.id = plan.project_id
    WHERE plan.id = #{planId}
    AND plan.deleted = 0
  </select>
  <!--根据计划ID获取已终止计划的详情,结束时间为实际终止时间-->
  <select id="getPlanDetails_terminate" resultType="com.dy.pipIrrGlobal.voIr.VoPlanDetails">
    SELECT
        plan.plan_name AS planName,
        pro.project_name AS projectName,
        IF(#{terminateTime} &lt; plan.plan_start_time, 6,
          IF(#{terminateTime} &lt; plan.plan_stop_time, 5, 4)) AS state,
        plan.plan_start_time AS planStartTime,
        plan.plan_stop_time AS planStopTime,
        #{terminateTime} AS realStopTime,
        NULL AS groupDetails,
        NULL AS failureCount
    FROM ir_irrigate_plan plan
      INNER JOIN ir_project pro ON pro.id = plan.project_id
    WHERE plan.id =2025041515194900009
    AND plan.deleted = 0
  </select>
  <!--根据计划ID获取计划状态,用于判断是否可以删除计划-->
  <select id="getPlanState" resultType="java.lang.Integer">
    SELECT
      plan_state
    FROM ir_irrigate_plan
    WHERE id = #{planId}
    AND deleted = 0
  </select>
</mapper>