|  |  | 
 |  |  |         ) 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() < 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() >= plan.plan_stop_time) OR (plan.executing_state = 3)) | 
 |  |  |   </select> | 
 |  |  |  | 
 |  |  |   <!--获取已完成的计划列表,小程序计划列表页使用--> | 
 |  |  | 
 |  |  |       plan.plan_start_time AS planStartTime, | 
 |  |  |       plan.plan_stop_time AS planStopTime, | 
 |  |  |       plan.duration, | 
 |  |  |       IF(plan.plan_state = 1, 1, | 
 |  |  |          IF(NOW() < plan.plan_start_time, 2, | 
 |  |  |             IF(NOW() >= plan.plan_start_time AND NOW() < 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() >= plan.plan_stop_time) | 
 |  |  |     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} | 
 |  |  |       </if> | 
 |  |  |     </trim> | 
 |  |  |   </select> | 
 |  |  |  | 
 |  |  |   <!--根据计划ID获取待终止计划的结束时间:未删除、未终止、已发布、当前时间小于计划结束时间--> | 
 |  |  | 
 |  |  |  | 
 |  |  |   </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() < plan.plan_start_time,'2', | 
 |  |  |             IF(NOW() < 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} < plan.plan_start_time, 6,--> | 
 |  |  | <!--          IF(#{terminateTime} < plan.plan_stop_time, 5, 4)) AS state,--> | 
 |  |  |         IF(plan.executing_state = 3, 5, | 
 |  |  |             IF(NOW() < plan_start_time, 2, | 
 |  |  |                 IF(NOW() < plan_stop_time, 3, 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 = #{planId} | 
 |  |  |     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> | 
 |  |  |  | 
 |  |  |   <!--判断当前项目是否存在已发布、未终止、未删除、未完成的计划,发布计划前判断使用--> | 
 |  |  |   <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() < 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() < 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() < 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> |