From 70b2c7a1f5b54cf9157d8fce4d6a9b0f2fadaebe Mon Sep 17 00:00:00 2001
From: zhubaomin <zhubaomin>
Date: 星期二, 15 四月 2025 17:13:28 +0800
Subject: [PATCH] 获取终止操作结果

---
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIrrigatePlanMapper.java                   |    8 ++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIrrigateGroupMapper.java                  |   10 +++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoPlanDetails.java                           |    8 ++
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml                                  |   18 ++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandSv.java             |    1 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrPlanOperateMapper.java                    |    9 +++
 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanCtrl.java |   20 ++++++
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIntakeOperateMapper.xml                                 |    2 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigateGroupMapper.xml                                 |   19 ++++++
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrPlanOperateMapper.xml                                   |    5 +
 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanSv.java   |   36 +++++++++++
 11 files changed, 133 insertions(+), 3 deletions(-)

diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIrrigateGroupMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIrrigateGroupMapper.java
index 829e58a..d4b1a79 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIrrigateGroupMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIrrigateGroupMapper.java
@@ -4,7 +4,9 @@
 import com.dy.pipIrrGlobal.pojoIr.IrIrrigateGroup;
 import com.dy.pipIrrGlobal.voIr.*;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -77,4 +79,12 @@
      * @return
      */
     List<VoGroupResult> getGroupResult(Long planId);
+
+    /**
+     * 鏍规嵁鐏屾簤璁″垝ID鑾峰彇杞亴缁勭粓姝㈢粨鏋�
+     * @param planId
+     * @param terminateTime
+     * @return
+     */
+    List<VoGroupResult> getGroupResult_terminate(@Param("planId") Long planId, @Param("terminateTime") Date terminateTime);
 }
\ No newline at end of file
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 896603a..4725152 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
@@ -102,6 +102,14 @@
     VoPlanDetails getPlanDetails(@Param("planId") Long planId);
 
     /**
+     * 鏍规嵁璁″垝ID鑾峰彇宸茬粓姝㈣鍒掔殑璇︽儏锛岀粨鏉熸椂闂翠负瀹為檯缁堟鏃堕棿
+     * @param planId
+     * @param terminateTime
+     * @return
+     */
+    VoPlanDetails getPlanDetails_terminate(@Param("planId") Long planId, @Param("terminateTime") Date terminateTime);
+
+    /**
      * 鏍规嵁璁″垝ID鑾峰彇璁″垝鐘舵�侊紝鐢ㄤ簬鍒ゆ柇鏄惁鍙互鍒犻櫎璁″垝
      * @param planId
      * @return
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrPlanOperateMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrPlanOperateMapper.java
index e945a18..5817fec 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrPlanOperateMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrPlanOperateMapper.java
@@ -4,6 +4,8 @@
 import com.dy.pipIrrGlobal.pojoIr.IrPlanOperate;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.Date;
+
 /**
  * @author ZhuBaoMin
  * @date 2025-02-21 11:11
@@ -24,4 +26,11 @@
     int updateByPrimaryKeySelective(IrPlanOperate record);
 
     int updateByPrimaryKey(IrPlanOperate record);
+
+    /**
+     * 鏍规嵁璁″垝ID鑾峰彇缁堟鏃堕棿
+     * @param planId
+     * @return
+     */
+    Date getTerminateTime(Long planId);
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoPlanDetails.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoPlanDetails.java
index fafbffa..ed2fd95 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoPlanDetails.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoPlanDetails.java
@@ -15,7 +15,7 @@
  */
 
 @Data
-@JsonPropertyOrder({"planName", "projectName", "state", "planStartTime", "planStopTime", "failureCount", "groups"})
+@JsonPropertyOrder({"planName", "projectName", "state", "planStartTime", "planStopTime", "realStopTime", "failureCount", "groups"})
 public class VoPlanDetails {
     private static final long serialVersionUID = 202504091125001L;
 
@@ -47,6 +47,12 @@
     private Date planStopTime;
 
     /**
+     * 瀹為檯缁撴潫鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+    private Date realStopTime;
+
+    /**
      * 鍛戒护鍙戝竷澶辫触鏁伴噺
      */
     private Integer failureCount;
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIntakeOperateMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIntakeOperateMapper.xml
index e953e95..cf9d2c9 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIntakeOperateMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIntakeOperateMapper.xml
@@ -187,7 +187,7 @@
         io.failure_factors AS result
     FROM ir_intake_operate io
         inner JOIN ir_group_intake gi ON gi.intake_id = io.intake_id
-    WHERE io.plan_id = #{planId} AND gi.group_id = #{groupId};
+    WHERE io.plan_id = #{planId} AND gi.group_id = #{groupId} AND operate_type = 1;
   </select>
 
   <!--鏍规嵁璁″垝ID鑾峰彇鍙栨按鍙e懡浠ゅ彂甯冨け璐ユ暟閲忥紝鐏屾簤璁″垝璇︽儏椤典娇鐢�-->
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigateGroupMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigateGroupMapper.xml
index 059fcf8..d127b5d 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigateGroupMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigateGroupMapper.xml
@@ -307,5 +307,24 @@
         INNER JOIN ir_irrigate_schedule sche ON sche.group_id = grp.id
         INNER JOIN ir_plan_schedule ps ON ps.schedule_id = sche.id
     WHERE ps.plan_id = #{planId};
+
+  </select>
+
+  <!--鏍规嵁鐏屾簤璁″垝ID鑾峰彇杞亴缁勭粓姝㈢粨鏋�-->
+  <select id="getGroupResult_terminate" resultType="com.dy.pipIrrGlobal.voIr.VoGroupResult">
+    SELECT
+        grp.id AS groupId,
+        grp.group_code AS groupCode,
+        IF(#{terminateTime} &lt; sche.start_time, 6,
+            IF(#{terminateTime} &lt; DATE_ADD(sche.start_time, INTERVAL sche.duration MINUTE), 5, 4)) AS state,
+        IF(#{terminateTime} > sche.start_time, sche.start_time, NULL) AS startTime,
+            IF(#{terminateTime} > DATE_ADD(sche.start_time, INTERVAL sche.duration MINUTE), DATE_ADD(sche.start_time, INTERVAL sche.duration MINUTE),
+                IF(#{terminateTime} > sche.start_time, #{terminateTime}, NULL)) AS stopTime,
+        sche.duration,
+        NULL AS publishResult
+    FROM ir_irrigate_group  grp
+        INNER JOIN ir_irrigate_schedule sche ON sche.group_id = grp.id
+        INNER JOIN ir_plan_schedule ps ON ps.schedule_id = sche.id
+    WHERE ps.plan_id = #{planId}
   </select>
 </mapper>
\ No newline at end of file
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 449f82d..94e29d9 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml
@@ -369,6 +369,24 @@
     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
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrPlanOperateMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrPlanOperateMapper.xml
index f7d1670..ffa361c 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrPlanOperateMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrPlanOperateMapper.xml
@@ -99,4 +99,9 @@
       operate_time = #{operateTime,jdbcType=TIMESTAMP}
     where id = #{id,jdbcType=BIGINT}
   </update>
+
+  <!--鏍规嵁璁″垝ID鑾峰彇缁堟鏃堕棿-->
+  <select id="getTerminateTime" resultType="java.util.Date">
+    SELECT operate_time AS operateTime FROM ir_plan_operate WHERE operate_type = 5 AND plan_id = #{planId} LIMIT 0,1
+  </select>
 </mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandSv.java
index 26e45fb..9b390ec 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandSv.java
@@ -718,6 +718,7 @@
             irIntakeOperate.setOperateType(operatetype);
             irIntakeOperate.setCommandId(comId);
             irIntakeOperate.setIntakeId(intakeId);
+            irIntakeOperate.setCommandResult((byte)1);
 
             Long id = addIntakeOperate(irIntakeOperate);
             if(id == null) {
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 ffd55e9..2b7b88c 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
@@ -418,4 +418,24 @@
             return BaseResponseUtils.buildException(e.getMessage());
         }
     }
+
+    /**
+     * 鏍规嵁璁″垝ID鑾峰彇璁″垝缁堟鎿嶄綔缁撴灉
+     * @param planId
+     * @return
+     */
+    @GetMapping(path = "/getTerminateResults")
+    public BaseResponse<VoPlanDetails> getTerminateResults(@RequestParam Long planId) {
+        if(planId == null) {
+            return BaseResponseUtils.buildErrorMsg("璁″垝ID涓嶈兘涓虹┖");
+        }
+
+        try {
+            VoPlanDetails res = irrigatePlanSv.getTerminateResults(planId);
+            return BaseResponseUtils.buildSuccess(res);
+        } catch (Exception e) {
+            log.error("鑾峰彇璁″垝鍙戝竷缁撴灉寮傚父", e);
+            return BaseResponseUtils.buildException(e.getMessage());
+        }
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanSv.java
index abb4064..faebbfc 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanSv.java
@@ -348,10 +348,11 @@
         if(planDetails == null){
             return null;
         }
-
         Integer failureCount = Optional.ofNullable(irIntakeOperateMapper.getFailureCount(planId)).orElse(0);
         planDetails.setFailureCount(failureCount);
 
+        Date terminateTime = Optional.ofNullable(irPlanOperateMapper.getTerminateTime(planId)).orElse(null);
+
         List<VoGroupResult> groupResults = irIrrigateGroupMapper.getGroupResult(planId);
         if(groupResults == null || groupResults.size() == 0){
             return null;
@@ -368,4 +369,37 @@
         return planDetails;
 
     }
+
+    /**
+     * 鏍规嵁璁″垝ID鑾峰彇璁″垝缁堟鎿嶄綔缁撴灉
+     * @param planId
+     * @return
+     */
+    public VoPlanDetails getTerminateResults(Long planId) {
+        // 鑾峰彇璁″垝缁堟鏃堕棿
+        Date terminateTime = Optional.ofNullable(irPlanOperateMapper.getTerminateTime(planId)).orElse(null);
+
+        VoPlanDetails planDetails = irrigatePlanMapper.getPlanDetails_terminate(planId, terminateTime);
+        if(planDetails == null){
+            return null;
+        }
+        Integer failureCount = Optional.ofNullable(irIntakeOperateMapper.getFailureCount(planId)).orElse(0);
+        planDetails.setFailureCount(failureCount);
+
+        List<VoGroupResult> groupResults = irIrrigateGroupMapper.getGroupResult_terminate(planId, terminateTime);
+        if(groupResults == null || groupResults.size() == 0){
+            return null;
+        }
+
+        for (VoGroupResult groupResult : groupResults) {
+            List<VoIntakeResult> intakeResults = irIntakeOperateMapper.getIntakeResult(planId, groupResult.getGroupId());
+            if(intakeResults != null) {
+                groupResult.setPublishResult(intakeResults);
+            }
+        }
+
+        planDetails.setGroups(groupResults);
+        return planDetails;
+
+    }
 }

--
Gitblit v1.8.0