pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml
@@ -325,8 +325,9 @@
      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() >= plan.plan_stop_time) OR (plan.executing_state = 3))
    ORDER BY plan.plan_state DESC
        INNER JOIN ir_plan_operate po ON po.plan_id = plan.id
    WHERE plan.deleted = 0 AND ((plan.plan_state = 2 AND NOW() >= plan.plan_stop_time) OR (plan.executing_state = 3)) AND po.operate_type = 1
    ORDER BY po.operate_time DESC
    <trim prefix="limit ">
      <if test="start != null and count != null">
        #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
@@ -396,4 +397,54 @@
    AND deleted = 0
  </select>
  <!--判断当前项目是否存在已发布、未终止、未删除、未完成的计划,发布计划前判断使用-->
  <select id="hasPlan_CurrentProject" resultType="java.lang.Integer">
    SELECT
      COUNT(*) AS recordCount
    FROM ir_irrigate_plan
    WHERE project_id = (SELECT project_id FROM ir_irrigate_plan WHERE id = #{planId})
      AND id != #{planId}
      AND plan_state = 2
      AND executing_state != 3
      AND deleted = 0
      AND NOW() &lt; plan_stop_time
  </select>
  <!--判断当前计划包含的轮灌组是否与其他项目下计划包含的轮灌组有交集,且其他项目的计划状态为已发布、未终止、未删除、未完成,发布计划前判断使用-->
  <select id="hasPlan_OtherProject" resultType="java.lang.Integer">
    SELECT EXISTS(
        SELECT sche.group_id
        FROM ir_irrigate_plan plan
            INNER JOIN ir_plan_schedule ps ON ps.plan_id = plan.id
            INNER JOIN ir_irrigate_schedule sche ON sche.id = ps.schedule_id
        WHERE plan.project_id != (SELECT project_id FROM ir_irrigate_plan WHERE id = #{planId})
            AND plan_state = 2
            AND executing_state != 3
            AND deleted = 0
            AND NOW() &lt; plan_stop_time
        INTERSECT
        SELECT sche.group_id
        FROM ir_irrigate_schedule sche
            INNER JOIN ir_plan_schedule ps ON schedule_id = sche.id
        WHERE ps.plan_id = #{planId}
        LIMIT 1
    ) AS has_intersection
  </select>
  <!--根据计划ID获取计划最新状态-->
  <select id="getPlanLatestState" resultType="java.lang.Integer">
    SELECT
        IF(plan_state = 1, 1,
            IF(executing_state = 3, 5,
                IF(NOW() &lt; plan_start_time, 2,
                  IF(NOW() > plan_stop_time, 3, 4)
                )
            )
    ) AS planState
    FROM ir_irrigate_plan
    WHERE deleted = 0 AND id = #{planId}
  </select>
</mapper>