From 1e69d160cb1e04b1438db0ca950dd5c15088619d Mon Sep 17 00:00:00 2001
From: zhubaomin <zhubaomin>
Date: 星期四, 17 四月 2025 15:26:52 +0800
Subject: [PATCH] 灌溉计划终止时不区分终止方式

---
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml |  455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 455 insertions(+), 0 deletions(-)

diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml
new file mode 100644
index 0000000..3932653
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml
@@ -0,0 +1,455 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dy.pipIrrGlobal.daoIr.IrIrrigatePlanMapper">
+  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoIr.IrIrrigatePlan">
+    <!--@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, duration, 
+    plan_state, executing_state, deleted
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select 
+    <include refid="Base_Column_List" />
+    from ir_irrigate_plan
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <!--@mbg.generated-->
+    delete from ir_irrigate_plan
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoIr.IrIrrigatePlan">
+    <!--@mbg.generated-->
+    insert into ir_irrigate_plan (id, project_id, plan_name, 
+      startup_mode, plan_start_time, plan_stop_time, 
+      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}, 
+      #{duration,jdbcType=INTEGER}, #{planState,jdbcType=TINYINT}, #{executingState,jdbcType=TINYINT}, 
+      #{deleted,jdbcType=BIGINT})
+  </insert>
+  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoIr.IrIrrigatePlan">
+    <!--@mbg.generated-->
+    insert into ir_irrigate_plan
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="projectId != null">
+        project_id,
+      </if>
+      <if test="planName != null">
+        plan_name,
+      </if>
+      <if test="startupMode != null">
+        startup_mode,
+      </if>
+      <if test="planStartTime != null">
+        plan_start_time,
+      </if>
+      <if test="planStopTime != null">
+        plan_stop_time,
+      </if>
+      <if test="duration != null">
+        duration,
+      </if>
+      <if test="planState != null">
+        plan_state,
+      </if>
+      <if test="executingState != null">
+        executing_state,
+      </if>
+      <if test="deleted != null">
+        deleted,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="projectId != null">
+        #{projectId,jdbcType=BIGINT},
+      </if>
+      <if test="planName != null">
+        #{planName,jdbcType=VARCHAR},
+      </if>
+      <if test="startupMode != null">
+        #{startupMode,jdbcType=TINYINT},
+      </if>
+      <if test="planStartTime != null">
+        #{planStartTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="planStopTime != null">
+        #{planStopTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="duration != null">
+        #{duration,jdbcType=INTEGER},
+      </if>
+      <if test="planState != null">
+        #{planState,jdbcType=TINYINT},
+      </if>
+      <if test="executingState != null">
+        #{executingState,jdbcType=TINYINT},
+      </if>
+      <if test="deleted != null">
+        #{deleted,jdbcType=BIGINT},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoIr.IrIrrigatePlan">
+    <!--@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>
+      <if test="startupMode != null">
+        startup_mode = #{startupMode,jdbcType=TINYINT},
+      </if>
+      <if test="planStartTime != null">
+        plan_start_time = #{planStartTime,jdbcType=TIMESTAMP},
+      </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},
+      </if>
+      <if test="executingState != null">
+        executing_state = #{executingState,jdbcType=TINYINT},
+      </if>
+      <if test="deleted != null">
+        deleted = #{deleted,jdbcType=BIGINT},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <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},
+      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>
+
+  <!--鏍规嵁鎸囧畾鐨勮鍒扞D鑾峰彇鍚姩妯″紡-->
+  <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>-->
+
+  <!--      <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,-->
+  <!--        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.startup_mode AS startupMode,
+    plan.plan_start_time AS planStartTime,
+    plan.duration AS duration
+    FROM ir_irrigate_plan plan
+    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
+      pro.project_name AS projectName,
+      plan.id AS planId,
+      plan.plan_name AS planName,
+      plan.startup_mode AS startupMode,
+      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
+    FROM ir_irrigate_plan plan
+        INNER JOIN ir_project pro ON pro.id = plan.project_id
+    <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>
+
+  <!--鑾峰彇宸插畬鎴愮殑璁″垝鍒楄〃锛屽皬绋嬪簭璁″垝鍒楄〃椤典娇鐢�-->
+  <select id="getCompletedPlans" resultType="com.dy.pipIrrGlobal.voIr.VoPlans">
+    SELECT
+      pro.project_name AS projectName,
+      plan.id AS planId,
+      plan.plan_name AS planName,
+      plan.startup_mode AS startupMode,
+      plan.plan_start_time AS planStartTime,
+      plan.plan_stop_time AS planStopTime,
+      plan.duration,
+      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
+        INNER JOIN ir_plan_operate po ON po.plan_id = plan.id
+    WHERE plan.deleted = 0 AND ((plan.plan_state = 2 AND NOW() &gt;= 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="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,-->
+        IF(plan.executing_state = 3, 5,
+            IF(NOW() &lt; plan_start_time, 2,
+                IF(NOW() &lt; 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() &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>
\ No newline at end of file

--
Gitblit v1.8.0