From 80e22bcc7af8aebed7443965655542fbe4966708 Mon Sep 17 00:00:00 2001
From: zhubaomin <zhubaomin>
Date: 星期三, 09 四月 2025 15:11:55 +0800
Subject: [PATCH] 灌溉计划删除,所有命令发布都失败依然允许终止

---
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIrrigatePlanMapper.java                        |    7 ++
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml                                       |    9 +++
 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanCtrl.java      |   80 ++++++++++++++++----------
 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/enums/OperateTypeENUM.java |    3 
 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanSv.java        |   54 ++++++++++++++++++
 5 files changed, 121 insertions(+), 32 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 2168dfe..c6f6114 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
@@ -93,4 +93,11 @@
      * @return
      */
     VoPlanDetails getPlanDetails(@Param("planId") Long planId);
+
+    /**
+     * 鏍规嵁璁″垝ID鑾峰彇璁″垝鐘舵�侊紝鐢ㄤ簬鍒ゆ柇鏄惁鍙互鍒犻櫎璁″垝
+     * @param planId
+     * @return
+     */
+    Integer getPlanState(@Param("planId") Long planId);
 }
\ 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 001c930..b87e5ce 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml
@@ -354,4 +354,13 @@
     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>
+
 </mapper>
\ No newline at end of file
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 1727a53..0fc14c5 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
@@ -31,6 +31,7 @@
 import java.time.format.DateTimeFormatter;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 
 /**
@@ -162,6 +163,25 @@
     }
 
     /**
+     * 鍒犻櫎鐏屾簤璁″垝
+     * @param planSimple
+     * @param bindingResult
+     * @return
+     */
+    @PostMapping(path = "deletePlan")
+    public BaseResponse<Boolean> deletePlan(@RequestBody @Valid PlanSimple planSimple, BindingResult bindingResult) {
+        if(bindingResult != null && bindingResult.hasErrors()){
+            return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+
+        Map map_result = irrigatePlanSv.deletePlan(planSimple);
+        if(map_result.get("success").equals(false)) {
+            return BaseResponseUtils.buildErrorMsg(map_result.get("msg").toString());
+        }
+        return BaseResponseUtils.buildSuccess() ;
+    }
+
+    /**
      * 鍙戝竷鐏屾簤璁″垝
      * 1. 淇敼鐏屾簤璁″垝鐘舵�佷负鍙戝竷鐘舵��
      * 2. 娣诲姞鐏屾簤璁″垝鎿嶄綔璁板綍
@@ -289,39 +309,37 @@
         }
 
         List<VoToTerminateIntakes> toTerminateIntakes = irrigatePlanSv.getToTerminateIntakes(planId);
-        if(toTerminateIntakes == null || toTerminateIntakes.size() == 0){
-            return BaseResponseUtils.buildErrorMsg("璇ヨ鍒掍笉瀛樺湪鎴栧凡缁堟");
-        }
+        if(toTerminateIntakes != null && toTerminateIntakes.size() > 0){
+            for(VoToTerminateIntakes toTerminateIntake : toTerminateIntakes){
+                Long intakeId = toTerminateIntake.getIntakeId();
+                Long commandId = toTerminateIntake.getCommandId();
+                Date startTime = toTerminateIntake.getStartTime();
+                Date currentTime = new Date();
+                if(currentTime.before(startTime)){
+                    // 鍙栨秷锛堣鐩栧紑闃�璁″垝锛�
+                    AutomaticClose automaticClose = new AutomaticClose();
+                    automaticClose.setIntakeId(intakeId);
+                    automaticClose.setPlannedOpenTime(terminateStartTime);
+                    automaticClose.setMinutes(terminateDuration);
+                    automaticClose.setOperator(operatorId);
+                    automaticClose.setOpenType(Byte.valueOf("1"));
 
-        for(VoToTerminateIntakes toTerminateIntake : toTerminateIntakes){
-            Long intakeId = toTerminateIntake.getIntakeId();
-            Long commandId = toTerminateIntake.getCommandId();
-            Date startTime = toTerminateIntake.getStartTime();
-            Date currentTime = new Date();
-            if(currentTime.before(startTime)){
-                // 鍙栨秷锛堣鐩栧紑闃�璁″垝锛�
-                AutomaticClose automaticClose = new AutomaticClose();
-                automaticClose.setIntakeId(intakeId);
-                automaticClose.setPlannedOpenTime(terminateStartTime);
-                automaticClose.setMinutes(terminateDuration);
-                automaticClose.setOperator(operatorId);
-                automaticClose.setOpenType(Byte.valueOf("1"));
+                    commandSv.planedOpenTimedClose(automaticClose, planId, (byte)2, terminateStartTime, terminateDuration);
+                }else {
+                    // 缁堟锛堣繙绋嬪叧闃�锛�
+                    VoIntakeVc intakeVc = irrigatePlanSv.getValveOpen(commandId);
+                    String rtuAddr = intakeVc.getRtuAddr();
+                    String vcNum = intakeVc.getVcNum();
+                    String orderNo = intakeVc.getOrderNo();
 
-                commandSv.planedOpenTimedClose(automaticClose, planId, (byte)2, terminateStartTime, terminateDuration);
-            }else {
-                // 缁堟锛堣繙绋嬪叧闃�锛�
-                VoIntakeVc intakeVc = irrigatePlanSv.getValveOpen(commandId);
-                String rtuAddr = intakeVc.getRtuAddr();
-                String vcNum = intakeVc.getVcNum();
-                String orderNo = intakeVc.getOrderNo();
-
-                ValveClose valveClose = new ValveClose();
-                valveClose.setRtuAddr(rtuAddr);
-                valveClose.setVcNum(vcNum);
-                valveClose.setOrderNo(orderNo);
-                valveClose.setOperator(operatorId);
-                valveClose.setOpenType(Byte.valueOf("1"));
-                commandSv.closeWx(valveClose, planId, (byte)3);
+                    ValveClose valveClose = new ValveClose();
+                    valveClose.setRtuAddr(rtuAddr);
+                    valveClose.setVcNum(vcNum);
+                    valveClose.setOrderNo(orderNo);
+                    valveClose.setOperator(operatorId);
+                    valveClose.setOpenType(Byte.valueOf("1"));
+                    commandSv.closeWx(valveClose, planId, (byte)3);
+                }
             }
         }
 
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 0fdabce..8c0e998 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
@@ -3,6 +3,7 @@
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
+import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.pipIrrGlobal.daoIr.*;
 import com.dy.pipIrrGlobal.daoRm.RmCommandHistoryMapper;
 import com.dy.pipIrrGlobal.pojoIr.IrIrrigatePlan;
@@ -11,13 +12,17 @@
 import com.dy.pipIrrGlobal.pojoIr.IrPlanSchedule;
 import com.dy.pipIrrGlobal.voIr.*;
 import com.dy.pipIrrGlobal.voRm.VoIntakeVc;
+import com.dy.pipIrrWechat.irrigatePlan.dto.PlanSimple;
+import com.dy.pipIrrWechat.irrigatePlan.enums.OperateTypeENUM;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author ZhuBaoMin
@@ -70,6 +75,55 @@
     }
 
     /**
+     * 鍒犻櫎鐏屾簤璁″垝
+     * @param planSimple
+     * @return
+     */
+    public Map deletePlan(PlanSimple planSimple) {
+        Long planId = planSimple.getPlanId();
+        Long operatorId = planSimple.getOperatorId();
+
+        Integer planState = irrigatePlanMapper.getPlanState(planId);
+        if(planState == null) {
+            Map map = new HashMap<>();
+            map.put("success", false);
+            map.put("msg", "鐏屾簤璁″垝涓嶅瓨鍦�");
+            map.put("content", null);
+            return map;
+        }
+        if(planState != 1) {
+            Map map = new HashMap<>();
+            map.put("success", false);
+            map.put("msg", "鐏屾簤璁″垝闈炶崏绋跨姸鎬侊紝涓嶅厑璁稿垹闄�");
+            map.put("content", null);
+            return map;
+        }
+
+        try {
+            irrigatePlanMapper.deleteByPrimaryKey(planId);
+            // 娣诲姞鐏屾簤璁″垝鎿嶄綔璁板綍
+            IrPlanOperate planOperate  = new IrPlanOperate();
+            planOperate.setPlanId(planId);
+            planOperate.setOperator(operatorId);
+            planOperate.setOperateType(OperateTypeENUM.DELETE.getCode());
+            planOperate.setOperateTime(new Date());
+            addPlanOperate(planOperate);
+
+            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;
+        }
+    }
+
+    /**
      * 鏍规嵁璁″垝ID鑾峰彇寰呯粓姝㈣鍒掔殑缁撴潫鏃堕棿锛氭湭鍒犻櫎銆佹湭缁堟銆佸凡鍙戝竷銆佸綋鍓嶆椂闂村皬浜庤鍒掔粨鏉熸椂闂�
      * @param planId
      * @return
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/enums/OperateTypeENUM.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/enums/OperateTypeENUM.java
index c3b8965..1dbd6e6 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/enums/OperateTypeENUM.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/enums/OperateTypeENUM.java
@@ -18,7 +18,8 @@
     PUBLISH((byte)2, "鍙戝竷"),
     EXECUTE((byte)3, "鎵ц"),
     SUSPEND((byte)4, "鏆傚仠"),
-    TERMINATE((byte)5, "缁堟");
+    TERMINATE((byte)5, "缁堟"),
+    DELETE((byte)6, "鍒犻櫎");
 
     private final Byte code;
     private final String message;

--
Gitblit v1.8.0