From 93860049875e89890c32d22732329a6985dad898 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期五, 28 三月 2025 17:06:08 +0800
Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV

---
 pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/java/com/dy/pipIrrIrrigate/PipIrrIrrigateApplication.java   |    2 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrProjectMapper.java                          |    8 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrProjectGroupMapper.java                     |    7 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoProjectDetail.java                           |   27 ++
 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/dto/IrrigatePlan.java   |    5 
 pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/java/com/dy/pipIrrIrrigate/project/ProjectCtrl.java         |  155 +++++++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/PipIrrRemoteApplication.java         |    3 
 pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/java/com/dy/pipIrrIrrigate/project/ProjectSv.java           |  172 ++++++++++++
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrProjectGroupMapper.xml                                    |    5 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoPlans.java                                   |    7 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIrrigatePlanMapper.java                     |    6 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrProjectMapper.xml                                         |   18 +
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml                                    |  241 +++++++++--------
 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanCtrl.java   |   20 +
 pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/java/com/dy/pipIrrIrrigate/project/dto/IrrigateProject.java |   40 +++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoIr/IrIrrigatePlan.java                          |    5 
 16 files changed, 589 insertions(+), 132 deletions(-)

diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIrrigatePlanMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIrrigatePlanMapper.java
index 1cbb726..44d7b26 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIrrigatePlanMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIrrigatePlanMapper.java
@@ -12,8 +12,8 @@
 
 /**
  * @author ZhuBaoMin
- * @date 2025-02-25 14:59
- * @LastEditTime 2025-02-25 14:59
+ * @date 2025-03-27 8:54
+ * @LastEditTime 2025-03-27 8:54
  * @Description
  */
 
@@ -67,12 +67,14 @@
 
     /**
      * 鑾峰彇鏈畬鎴愮殑璁″垝鍒楄〃锛屽皬绋嬪簭璁″垝鍒楄〃椤典娇鐢�
+     * 璁″垝鐘舵�侊細1-鑽夌锛�2-鏈墽琛岋紝3-鎵ц涓紝4-宸插畬鎴�
      * @return
      */
     List<VoPlans> getNotCompletePlans();
 
     /**
      * 鑾峰彇宸插畬鎴愮殑璁″垝鍒楄〃锛屽皬绋嬪簭璁″垝鍒楄〃椤典娇鐢�
+     * 璁″垝鐘舵�侊細1-鑽夌锛�2-鏈墽琛岋紝3-鎵ц涓紝4-宸插畬鎴�
      * @return
      */
     List<VoPlans> getCompletedPlans();
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrProjectGroupMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrProjectGroupMapper.java
index adfa010..766733e 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrProjectGroupMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrProjectGroupMapper.java
@@ -25,4 +25,11 @@
 
     int updateByPrimaryKey(IrProjectGroup record);
 
+    /**
+     * 瑙g粦椤圭洰涓庤疆缃愮粍鍏宠仈
+     * @param projectId
+     * @return
+     */
+    Integer unbindGroup(Long projectId);
+
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrProjectMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrProjectMapper.java
index 9b0380b..82bb1ae 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrProjectMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrProjectMapper.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dy.pipIrrGlobal.pojoIr.IrProject;
 import com.dy.pipIrrGlobal.voIr.VoProject;
+import com.dy.pipIrrGlobal.voIr.VoProjectDetail;
 import com.dy.pipIrrGlobal.voIr.VoProjectOne;
 import com.dy.pipIrrGlobal.voIr.VoProjectSimple;
 import org.apache.ibatis.annotations.Mapper;
@@ -79,4 +80,11 @@
      * @return
      */
     List<VoProjectSimple> getSimpleProjects(Map<?, ?> params);
+
+    /**
+     * 鏍规嵁椤圭洰Id鑾峰彇椤圭洰璇︽儏锛岀紪杈戦」鐩俊鎭娇鐢�
+     * @param projectId
+     * @return
+     */
+    VoProjectDetail getProjectDetail(Long projectId);
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoIr/IrIrrigatePlan.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoIr/IrIrrigatePlan.java
index ea5f063..8b79933 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoIr/IrIrrigatePlan.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoIr/IrIrrigatePlan.java
@@ -36,6 +36,11 @@
     private Long id;
 
     /**
+     * 椤圭洰ID
+     */
+    private Long projectId;
+
+    /**
      * 璁″垝鍚嶇О
      */
     @NotBlank(message = "璁″垝鍚嶇О涓嶈兘涓虹┖")
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoPlans.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoPlans.java
index 2318ee7..6e16dee 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoPlans.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoPlans.java
@@ -16,11 +16,16 @@
  */
 
 @Data
-@JsonPropertyOrder({"planId", "planName", "startupMode", "planStartTime", "planStopTime", "duration", "planState"})
+@JsonPropertyOrder({"projectName","planId", "planName", "startupMode", "planStartTime", "planStopTime", "duration", "planState"})
 public class VoPlans {
     public static final long serialVersionUID = 202503261555001L;
 
     /**
+     * 椤圭洰鍚嶇О
+     */
+    private String projectName;
+
+    /**
      * 璁″垝ID
      */
     @JSONField(serializeUsing= ObjectWriterImplToString.class)
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoProjectDetail.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoProjectDetail.java
new file mode 100644
index 0000000..29c2859
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoProjectDetail.java
@@ -0,0 +1,27 @@
+package com.dy.pipIrrGlobal.voIr;
+
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import lombok.Data;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2025-03-28 8:49
+ * @LastEditTime 2025-03-28 8:49
+ * @Description 鐏屾簤椤圭洰璇︽儏瑙嗗浘瀵硅薄
+ */
+
+@Data
+@JsonPropertyOrder({"projectName", "irrigateGroups"})
+public class VoProjectDetail {
+    public static final long serialVersionUID = 202503280850001L;
+
+    /**
+     * 椤圭洰鍚嶇О
+     */
+    private String projectName;
+
+    /**
+     * 鐏屾簤缁勫垪琛�
+     */
+    private String irrigateGroups;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml
index 699d758..08b7a87 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml
@@ -5,6 +5,7 @@
     <!--@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" />
@@ -16,7 +17,7 @@
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
-    id, plan_name, startup_mode, plan_start_time, plan_stop_time, duration,
+    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">
@@ -33,11 +34,11 @@
   </delete>
   <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoIr.IrIrrigatePlan">
     <!--@mbg.generated-->
-    insert into ir_irrigate_plan (id, plan_name,
+    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}, #{planName,jdbcType=VARCHAR},
+    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})
@@ -48,6 +49,9 @@
     <trim prefix="(" suffix=")" suffixOverrides=",">
       <if test="id != null">
         id,
+      </if>
+      <if test="projectId != null">
+        project_id,
       </if>
       <if test="planName != null">
         plan_name,
@@ -77,6 +81,9 @@
     <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},
@@ -108,6 +115,9 @@
     <!--@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>
@@ -138,7 +148,8 @@
   <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoIr.IrIrrigatePlan">
     <!--@mbg.generated-->
     update ir_irrigate_plan
-    set plan_name = #{planName,jdbcType=VARCHAR},
+    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},
@@ -152,111 +163,111 @@
   <!--鏍规嵁鎸囧畾鐨勮鍒扞D鑾峰彇鍚姩妯″紡-->
   <select id="getStartupMode" resultType="java.lang.Byte">
     SELECT
-        startup_mode AS startupMode
+    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-->
-<!--        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,-->
+  <!--  <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>-->
+  <!--        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="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>-->
-<!--    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>-->
+  <!--      <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
+    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
+    AND plan.deleted = 0 AND plan_state = 1
     LIMIT 1
   </select>
 
@@ -270,39 +281,43 @@
   <!--鑾峰彇鏈畬鎴愮殑璁″垝鍒楄〃锛屽皬绋嬪簭璁″垝鍒楄〃椤典娇鐢�-->
   <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
+      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
-    WHERE deleted = 0 AND (plan_state = 1 OR NOW() &lt; plan_stop_time)
-    ORDER BY plan_state DESC
+        INNER JOIN ir_project pro ON pro.id = plan.project_id
+    WHERE plan.deleted = 0 AND (plan.plan_state = 1 OR NOW() &lt; plan.plan_stop_time)
+    ORDER BY plan.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
+      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
-    WHERE deleted = 0 AND (plan_state = 2 AND NOW() &gt;= plan_stop_time)
-    ORDER BY plan_state DESC
+        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)
+    ORDER BY plan.plan_state DESC
   </select>
 
 </mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrProjectGroupMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrProjectGroupMapper.xml
index d9ab535..62d8fdb 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrProjectGroupMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrProjectGroupMapper.xml
@@ -88,4 +88,9 @@
       sort = #{sort,jdbcType=INTEGER}
     where id = #{id,jdbcType=BIGINT}
   </update>
+
+  <!--瑙g粦椤圭洰涓庤疆缃愮粍鍏宠仈-->
+  <delete id="unbindGroup">
+    delete from ir_project_group where project_id=#{projectId}
+  </delete>
 </mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrProjectMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrProjectMapper.xml
index 050c788..304156e 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrProjectMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrProjectMapper.xml
@@ -308,4 +308,22 @@
       </if>
     </trim>
   </select>
+
+  <!--鏍规嵁椤圭洰Id鑾峰彇椤圭洰璇︽儏锛岀紪杈戦」鐩俊鎭娇鐢�-->
+  <select id="getProjectDetail" resultType="com.dy.pipIrrGlobal.voIr.VoProjectDetail">
+    SELECT
+        projectName,
+        GROUP_CONCAT(groupId) AS irrigateGroups
+    FROM
+      (
+        SELECT
+          pro.project_name AS projectName,
+          grp.id AS groupId
+        FROM ir_project pro
+               INNER JOIN ir_project_group pg ON pg.project_id = pro.id
+               INNER JOIN ir_irrigate_group grp ON grp.id = pg.group_id
+        WHERE pro.id = #{projectId}
+      ) project
+    GROUP BY projectName
+  </select>
 </mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/java/com/dy/pipIrrIrrigate/PipIrrIrrigateApplication.java b/pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/java/com/dy/pipIrrIrrigate/PipIrrIrrigateApplication.java
index 2d31732..297f1a0 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/java/com/dy/pipIrrIrrigate/PipIrrIrrigateApplication.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/java/com/dy/pipIrrIrrigate/PipIrrIrrigateApplication.java
@@ -9,7 +9,7 @@
 import org.springframework.context.annotation.FilterType;
 
 @SpringBootApplication
-@EnableAspectJAutoProxy
+@EnableAspectJAutoProxy(exposeProxy = true)
 @EnableMultiDataSource
 @ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.pipIrrIrrigate"},
         excludeFilters = {
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/java/com/dy/pipIrrIrrigate/project/ProjectCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/java/com/dy/pipIrrIrrigate/project/ProjectCtrl.java
index 973bccf..30ab742 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/java/com/dy/pipIrrIrrigate/project/ProjectCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/java/com/dy/pipIrrIrrigate/project/ProjectCtrl.java
@@ -7,8 +7,11 @@
 import com.dy.common.webUtil.ResultCodeMsg;
 import com.dy.pipIrrGlobal.pojoIr.IrProject;
 import com.dy.pipIrrGlobal.voIr.VoProject;
+import com.dy.pipIrrGlobal.voIr.VoProjectDetail;
 import com.dy.pipIrrGlobal.voIr.VoProjectOne;
+import com.dy.pipIrrGlobal.voIr.VoProjectSimple;
 import com.dy.pipIrrGlobal.voSe.VoActiveCard;
+import com.dy.pipIrrIrrigate.project.dto.IrrigateProject;
 import com.dy.pipIrrIrrigate.result.IrrigateResultCode;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.media.Content;
@@ -44,8 +47,7 @@
     private final ProjectSv projectSv;
 
     /**
-     * 娣诲姞椤圭洰
-     *
+     * 娣诲姞椤圭洰锛屾棫鐗堟湰锛屽師鍒欎笂搴熷純
      * @param po            椤圭洰瀹炰綋瀵硅薄
      * @param bindingResult
      * @return 娣诲姞鏄惁鎴愬姛
@@ -79,7 +81,7 @@
     }
 
     /**
-     * 閫昏緫鍒犻櫎椤圭洰
+     * 閫昏緫鍒犻櫎椤圭洰锛屾棫鐗堟湰锛屽師鍒欎笂搴熷純
      * @param map
      * @return
      */
@@ -141,7 +143,7 @@
     }
 
     /**
-     * 淇敼椤圭洰淇℃伅
+     * 淇敼椤圭洰淇℃伅锛屾棫鐗堟湰锛屽師鍒欎笂搴熷純
      * @param po
      * @param bindingResult
      * @return
@@ -175,7 +177,7 @@
     }
 
     /**
-     * 淇敼椤圭洰鐘舵��
+     * 淇敼椤圭洰鐘舵�侊紝鏃犵敤鎺ュ彛锛屽師鍒欎笂搴熷純
      * @param po
      * @param
      * @return
@@ -206,8 +208,7 @@
     }
 
     /**
-     * 鑾峰彇涓�涓」鐩暟鎹�
-     *
+     * 鑾峰彇涓�涓」鐩暟鎹紝鏃х増鏈紝鍘熷垯涓婂簾寮�
      * @return 鑾峰彇涓�涓」鐩暟鎹�
      */
     @Operation(summary = "鑾峰彇涓�涓」鐩暟鎹�", description = "鑾峰彇涓�涓」鐩暟鎹�")
@@ -229,7 +230,7 @@
     }
 
     /**
-     * 鍒嗛〉鏌ヨ
+     * 鍒嗛〉鏌ヨ锛屾棫鐗堟湰锛屽師鍒欎笂搴熷純
      * @param vo
      * @return
      */
@@ -253,4 +254,142 @@
             return BaseResponseUtils.buildException(e.getMessage());
         }
     }
+
+    /**
+     * 娣诲姞椤圭洰锛屾柊鐗堟湰锛屼娇鐢ㄨ繖涓�
+     * @param po            椤圭洰瀹炰綋瀵硅薄
+     * @param bindingResult
+     * @return 娣诲姞鏄惁鎴愬姛
+     */
+    @PostMapping(path = "addIrrigateProject", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @Transactional(rollbackFor = Exception.class)
+    @SsoAop()
+    public BaseResponse<Boolean> addIrrigateProject(@RequestBody @Valid IrrigateProject po, BindingResult bindingResult) {
+        if (bindingResult != null && bindingResult.hasErrors()) {
+            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+
+        Map map_result = projectSv.addIrrigateProject(po);
+        if(map_result.get("success").equals(false)) {
+            return BaseResponseUtils.buildErrorMsg(map_result.get("msg").toString());
+        }
+        return BaseResponseUtils.buildSuccess() ;
+
+        //String projectName = po.getProjectName();
+        //String irrigateGroups = po.getIrrigateGroups();
+        //Long operatorId = po.getOperatorId();
+        //
+        //IrProject irProject = new IrProject();
+        //irProject.setProjectName(projectName);
+        //irProject.setProjectState((byte)1);
+        //irProject.setOperator(operatorId);
+        //irProject.setOperateTime(new Date());
+        //irProject.setDeleted((byte)0);
+        //Long projectId = projectSv.addIrrigateProject(irProject);
+        //if(projectId == null) {
+        //    return BaseResponseUtils.buildErrorMsg("鍒涘缓鐏屾簤椤圭洰澶辫触");
+        //}
+        //
+        //String[] irrigateGroupArr = irrigateGroups.split(",");
+        //Integer sort = 1;
+        //for(String irrigateGroupId : irrigateGroupArr) {
+        //    String trimmed = irrigateGroupId.trim();
+        //    if(trimmed.isEmpty()) {
+        //        continue;
+        //    }
+        //    try {
+        //        Long irrigateGroupIdLong = Long.parseLong(trimmed);
+        //        IrProjectGroup irProjectGroup = new IrProjectGroup();
+        //        irProjectGroup.setProjectId(projectId);
+        //        irProjectGroup.setGroupId(irrigateGroupIdLong);
+        //        irProjectGroup.setSort(sort++);
+        //        projectSv.projectBindGroup(irProjectGroup);
+        //
+        //    } catch (NumberFormatException  e) {
+        //        return BaseResponseUtils.buildErrorMsg("鐏屾簤缁処D鏍煎紡閿欒");
+        //    }
+        //}
+
+    }
+
+    /**
+     * 鍒犻櫎椤圭洰锛屾柊鐗堟湰锛屼娇鐢ㄨ繖涓�
+     * @param projectId
+     * @return
+     */
+    @PostMapping(path = "deleteIrrigateProject")
+    @Transactional(rollbackFor = Exception.class)
+    @SsoAop()
+    public BaseResponse<Boolean> deleteIrrigateProject(@RequestParam(required = false) Long projectId) {
+        if(projectId == null) {
+            return BaseResponseUtils.buildErrorMsg("椤圭洰ID涓嶈兘涓虹┖");
+        }
+
+        Map map_result = projectSv.deleteIrrigateProject(projectId);
+        if(map_result.get("success").equals(false)) {
+            return BaseResponseUtils.buildErrorMsg(map_result.get("msg").toString());
+        }
+        return BaseResponseUtils.buildSuccess() ;
+    }
+
+    /**
+     * 淇敼椤圭洰锛屾柊鐗堟湰锛屼娇鐢ㄨ繖涓�
+     * @param po
+     * @param bindingResult
+     * @return
+     */
+    @PostMapping(path = "updateIrrigateProject", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @Transactional(rollbackFor = Exception.class)
+    @SsoAop()
+    public BaseResponse<Boolean> updateIrrigateProject(@RequestBody @Valid IrrigateProject po, BindingResult bindingResult){
+        if (bindingResult != null && bindingResult.hasErrors()) {
+            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+
+        if(po.getProjectId() == null) {
+            return BaseResponseUtils.buildErrorMsg("椤圭洰ID涓嶈兘涓虹┖");
+        }
+
+        Map map_result = projectSv.updateIrrigateProject(po);
+        if(map_result.get("success").equals(false)) {
+            return BaseResponseUtils.buildErrorMsg(map_result.get("msg").toString());
+        }
+        return BaseResponseUtils.buildSuccess() ;
+    }
+
+    /**
+     * 鍒嗛〉鏌ヨ椤圭洰锛屾柊鐗堟湰锛岀洰鍓嶄娇鐢�
+     * @param qo
+     * @return
+     */
+    @GetMapping(path = "/getSimpleProjects")
+    @SsoAop()
+    public BaseResponse<QueryResultVo<List<VoProjectSimple>>> getSimpleProjects(QueryVo qo) {
+        try {
+            QueryResultVo<List<VoProjectSimple>> res = projectSv.getSimpleProjects(qo);
+            return BaseResponseUtils.buildSuccess(res);
+        } catch (Exception e) {
+            log.error("鑾峰彇椤圭洰璁板綍寮傚父", e);
+            return BaseResponseUtils.buildException(e.getMessage());
+        }
+    }
+
+    /**
+     * 鏍规嵁椤圭洰Id鑾峰彇椤圭洰璇︽儏锛岀紪杈戦」鐩俊鎭娇鐢�
+     * @param projectId
+     * @return
+     */
+    @GetMapping(path = "getProject")
+    @SsoAop()
+    public BaseResponse<VoProjectDetail> getProject(@RequestParam Long projectId) {
+        if(projectId == null) {
+            return BaseResponseUtils.buildErrorMsg("椤圭洰ID涓嶈兘涓虹┖");
+        }
+
+        Map map_result = projectSv.getProjectDetail(projectId);
+        if(map_result.get("success").equals(false)) {
+            return BaseResponseUtils.buildErrorMsg(map_result.get("msg").toString());
+        }
+        return BaseResponseUtils.buildSuccess(map_result.get("content")) ;
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/java/com/dy/pipIrrIrrigate/project/ProjectSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/java/com/dy/pipIrrIrrigate/project/ProjectSv.java
index adad9dc..0e913ac 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/java/com/dy/pipIrrIrrigate/project/ProjectSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/java/com/dy/pipIrrIrrigate/project/ProjectSv.java
@@ -2,16 +2,24 @@
 
 
 import com.dy.common.webUtil.QueryResultVo;
+import com.dy.pipIrrGlobal.daoIr.IrProjectGroupMapper;
 import com.dy.pipIrrGlobal.daoIr.IrProjectMapper;
 import com.dy.pipIrrGlobal.pojoIr.IrProject;
+import com.dy.pipIrrGlobal.pojoIr.IrProjectGroup;
 import com.dy.pipIrrGlobal.voIr.VoProject;
+import com.dy.pipIrrGlobal.voIr.VoProjectDetail;
 import com.dy.pipIrrGlobal.voIr.VoProjectOne;
+import com.dy.pipIrrGlobal.voIr.VoProjectSimple;
+import com.dy.pipIrrIrrigate.project.dto.IrrigateProject;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.common.utils.PojoUtils;
+import org.springframework.aop.framework.AopContext;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -27,9 +35,11 @@
     @Autowired
     private IrProjectMapper irProjectMapper;
 
+    @Autowired
+    private IrProjectGroupMapper irProjectGroupMapper;
+
     /**
-     * 娣诲姞椤圭洰
-     *
+     * 娣诲姞椤圭洰锛屾棫鐗堟湰锛屽師鍒欎笂搴熷純
      * @param po
      * @return
      */
@@ -62,8 +72,121 @@
     }
 
     /**
-     * 鍒犻櫎椤圭洰
-     *
+     * 娣诲姞椤圭洰锛岀洰鍓嶄娇鐢�
+     * @param po
+     * @return
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public Map addIrrigateProject(IrrigateProject po) {
+        String projectName = po.getProjectName();
+        String irrigateGroups = po.getIrrigateGroups();
+        Long operatorId = po.getOperatorId();
+
+        IrProject irProject = new IrProject();
+        irProject.setProjectName(projectName);
+        irProject.setProjectState((byte)1);
+        irProject.setOperator(operatorId);
+        irProject.setOperateTime(new Date());
+        irProject.setDeleted((byte)0);
+        irProjectMapper.insert(irProject);
+        Long projectId = irProject.getId();
+        if(projectId == null) {
+            Map map = new HashMap<>();
+            map.put("success", false);
+            map.put("msg", "鍒涘缓鐏屾簤椤圭洰澶辫触");
+            map.put("content", null);
+            return map;
+        }
+
+        String[] irrigateGroupArr = irrigateGroups.split(",");
+        Integer sort = 1;
+        for(String irrigateGroupId : irrigateGroupArr) {
+            String trimmed = irrigateGroupId.trim();
+            if(trimmed.isEmpty()) {
+                continue;
+            }
+            try {
+                Long irrigateGroupIdLong = Long.parseLong(trimmed);
+                IrProjectGroup irProjectGroup = new IrProjectGroup();
+                irProjectGroup.setProjectId(projectId);
+                irProjectGroup.setGroupId(irrigateGroupIdLong);
+                irProjectGroup.setSort(sort++);
+                irProjectGroupMapper.insert(irProjectGroup);
+            } catch (NumberFormatException  e) {
+                Map map = new HashMap<>();
+                map.put("success", false);
+                map.put("msg", "鐏屾簤缁処D鏍煎紡閿欒");
+                map.put("content", null);
+                return map;
+            }
+        }
+        Map map = new HashMap<>();
+        map.put("success", true);
+        map.put("msg", "娣诲姞鐏屾簤椤圭洰鎴愬姛");
+        map.put("content", null);
+        return map;
+    }
+
+    /**
+     * 鍒犻櫎鐏屾簤椤圭洰锛岀洰鍓嶄娇鐢�
+     * @param projectId
+     * @return
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public Map deleteIrrigateProject(Long projectId) {
+        try {
+            irProjectGroupMapper.unbindGroup(projectId);
+            irProjectMapper.deleteByPrimaryKey(projectId);
+
+            Map map = new HashMap<>();
+            map.put("success", true);
+            map.put("msg", "鐏屾簤椤圭洰鍒犻櫎鎴愬姛");
+            map.put("content", null);
+            return map;
+        } catch (Exception e) {
+            Map map = new HashMap<>();
+            map.put("success", false);
+            map.put("msg", "鐏屾簤椤圭洰鍒犻櫎澶辫触");
+            map.put("content", null);
+            return map;
+        }
+    }
+
+    /**
+     * 淇敼鐏屾簤椤圭洰锛岀洰鍓嶄娇鐢�
+     * @param po
+     * @return
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public Map updateIrrigateProject(IrrigateProject po) {
+        Long projectId = po.getProjectId();
+        Map map_deleteProject = ((ProjectSv) AopContext.currentProxy()).deleteIrrigateProject(projectId);
+        if(map_deleteProject.get("success").equals(false)) {
+            Map map = new HashMap<>();
+            map.put("success", false);
+            map.put("msg", map_deleteProject.get("msg").toString());
+            map.put("content", null);
+            return map;
+        }
+
+        Map map_addProject = ((ProjectSv) AopContext.currentProxy()).addIrrigateProject(po);
+        if(map_addProject.get("success").equals(false)) {
+            Map map = new HashMap<>();
+            map.put("success", false);
+            map.put("msg", map_addProject.get("msg").toString());
+            map.put("content", null);
+            return map;
+        }
+
+        Map map = new HashMap<>();
+        map.put("success", true);
+        map.put("msg", "淇敼鐏屾簤椤圭洰鎴愬姛");
+        map.put("content", null);
+        return map;
+    }
+
+    /**
+     * 鍒犻櫎椤圭洰锛屾棫鐗堟湰锛屽師鍒欎笂搴熷純
      * @param id
      */
     public Integer deleteProject(Long id) {
@@ -131,7 +254,7 @@
     }
 
     /**
-     * 鍒嗛〉鏌ヨ椤圭洰
+     * 鍒嗛〉鏌ヨ椤圭洰锛屾棫鐗堟湰锛屽師鍒欎笂搴熷純
      * @param queryVo
      * @return
      */
@@ -146,4 +269,43 @@
         rsVo.obj = irProjectMapper.getProjects(params);
         return rsVo;
     }
+
+    /**
+     * 鍒嗛〉鏌ヨ椤圭洰锛屾柊鐗堟湰锛岀洰鍓嶄娇鐢�
+     * @param queryVo
+     * @return
+     */
+    public QueryResultVo<List<VoProjectSimple>> getSimpleProjects(QueryVo queryVo) {
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
+        Long itemTotal = irProjectMapper.getSimpleProjectsCount(params);
+
+        QueryResultVo<List<VoProjectSimple>> rsVo = new QueryResultVo<>();
+        rsVo.pageSize = queryVo.pageSize;
+        rsVo.pageCurr = queryVo.pageCurr;
+        rsVo.calculateAndSet(itemTotal, params);
+        rsVo.obj = irProjectMapper.getSimpleProjects(params);
+        return rsVo;
+    }
+
+    /**
+     * 鏍规嵁椤圭洰Id鑾峰彇椤圭洰璇︽儏锛岀紪杈戦」鐩俊鎭娇鐢�
+     * @param projectId
+     * @return
+     */
+    public Map getProjectDetail(Long projectId) {
+        try {
+            VoProjectDetail voProjectDetail = irProjectMapper.getProjectDetail(projectId);
+            Map map = new HashMap<>();
+            map.put("success", true);
+            map.put("msg", "鑾峰彇椤圭洰璇︽儏鎴愬姛");
+            map.put("content", voProjectDetail);
+            return map;
+        } catch (Exception e) {
+            Map map = new HashMap<>();
+            map.put("success", false);
+            map.put("msg", "鑾峰彇椤圭洰璇︽儏澶辫触");
+            map.put("content", null);
+            return map;
+        }
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/java/com/dy/pipIrrIrrigate/project/dto/IrrigateProject.java b/pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/java/com/dy/pipIrrIrrigate/project/dto/IrrigateProject.java
new file mode 100644
index 0000000..6c44efe
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/java/com/dy/pipIrrIrrigate/project/dto/IrrigateProject.java
@@ -0,0 +1,40 @@
+package com.dy.pipIrrIrrigate.project.dto;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2025-03-27 15:09
+ * @LastEditTime 2025-03-27 15:09
+ * @Description 鐏屾簤椤圭洰瀹炰綋绫伙紝娣诲姞椤圭洰浣跨敤
+ */
+
+@Data
+public class IrrigateProject {
+    public static final long serialVersionUID = 202503271510001L;
+
+    /**
+     * 椤圭洰ID锛屼慨鏀归」鐩俊鎭椂闇�瑕佷紶鍏�
+     */
+    private Long projectId;
+
+    /**
+     * 椤圭洰鍚嶇О
+     */
+    @NotBlank(message = "椤圭洰鍚嶇О涓嶈兘涓虹┖")
+    private String projectName;
+
+    /**
+     * 杞亴缁勫垪琛�
+     */
+    @NotBlank(message = "椤圭洰蹇呴』鍖呭惈杞亴缁�")
+    private String irrigateGroups;
+
+    /**
+     * 鎿嶄綔鍛業D
+     */
+    @NotNull(message = "鎿嶄綔鍛業D涓嶈兘涓虹┖")
+    private Long operatorId;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/PipIrrRemoteApplication.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/PipIrrRemoteApplication.java
index e0c3ded..3992ced 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/PipIrrRemoteApplication.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/PipIrrRemoteApplication.java
@@ -29,7 +29,8 @@
         "com.dy.pipIrrGlobal.daoBa",
         "com.dy.pipIrrGlobal.daoFi",
         "com.dy.pipIrrGlobal.daoAllRound",
-        "com.dy.pipIrrGlobal.daoLargeScreen"
+        "com.dy.pipIrrGlobal.daoLargeScreen",
+        "com.dy.pipIrrGlobal.daoIr"
 })
 public class PipIrrRemoteApplication {
 
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanCtrl.java
index 2e03d8f..e60cbae 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanCtrl.java
@@ -60,6 +60,7 @@
             return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
         }
 
+        Long projectId = planAndSchedule.getProjectId();
         Long operatorId = planAndSchedule.getOperatorId();
         Byte startupMode = planAndSchedule.getStartupMode();
         Date planStartTime = planAndSchedule.getPlanStartTime();;
@@ -68,6 +69,20 @@
         Integer duration = 0;
         for(IrrigateSchedule schedule : planAndSchedule.getSchedules()){
             duration = duration + schedule.getDuration();
+        }
+
+        if(startupMode == 2){
+            if(planStartTime == null) {
+                return BaseResponseUtils.buildErrorMsg("鑷姩鍚姩妯″紡蹇呴』鎸囧畾璁″垝鍚姩鏃堕棿");
+            }
+
+            LocalDateTime startTime = planStartTime.toInstant().atZone(ZoneId.systemDefault()) .toLocalDateTime();
+            LocalDateTime currentTime = LocalDateTime.now();
+            currentTime = currentTime.plusHours(8);
+
+            if(!startTime.isAfter(currentTime)) {
+                return BaseResponseUtils.buildErrorMsg("鍚姩鏃堕棿涓嶈兘鍦�8灏忔椂涔嬪唴");
+            }
         }
 
         //if(startupMode == 1){
@@ -80,6 +95,7 @@
         //planStopTime = Date.from(stopTime.atZone(ZoneId.systemDefault()).toInstant());
 
         IrIrrigatePlan plan = new IrIrrigatePlan();
+        plan.setProjectId(projectId);
         plan.setPlanName(planAndSchedule.getPlanName());
         plan.setStartupMode(startupMode);
         plan.setPlanStartTime(planStartTime);
@@ -208,7 +224,9 @@
             planStartTime = new Date();
         }
         LocalDateTime startTime = planStartTime.toInstant().atZone(ZoneId.systemDefault()) .toLocalDateTime();
-        startTime = startTime.plusMinutes(5);
+        if(startupMode == 1){
+            startTime = startTime.plusMinutes(5);
+        }
         planStartTime = Date.from(startTime.atZone(ZoneId.systemDefault()).toInstant());
         LocalDateTime stopTime = startTime.plusMinutes(duration);
         planStopTime = Date.from(stopTime.atZone(ZoneId.systemDefault()).toInstant());
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/dto/IrrigatePlan.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/dto/IrrigatePlan.java
index 7327f5b..c7fa0f7 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/dto/IrrigatePlan.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/dto/IrrigatePlan.java
@@ -18,6 +18,11 @@
     public static final long serialVersionUID = 202502201511001L;
 
     /**
+     * 椤圭洰ID
+     */
+    private Long projectId;
+
+    /**
      * 璁″垝鍚嶇О
      */
     @NotBlank(message = "璁″垝鍚嶇О涓嶈兘涓虹┖")

--
Gitblit v1.8.0