From 371462edc6b3ee1de97c235d4a019b544badda0d Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期六, 14 二月 2026 22:09:37 +0800
Subject: [PATCH] AGV工作档界面和逻辑调整

---
 src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java |  310 +++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 234 insertions(+), 76 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
index a983123..e146d15 100644
--- a/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
@@ -1,24 +1,25 @@
 package com.zy.asrs.service.impl;
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import com.core.common.Cools;
 import com.core.common.DateUtils;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.mapper.TaskMapper;
 import com.zy.asrs.service.*;
-import com.baomidou.mybatisplus.service.impl.ServiceImpl;
-import com.zy.asrs.utils.OrderInAndOutUtil;
+import com.zy.asrs.task.handler.AgvHandler;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Collections;
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 import java.util.concurrent.TimeUnit;
 
+@Slf4j
 @Service("taskService")
 public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements TaskService {
 
@@ -34,11 +35,19 @@
     private TaskService taskService;
     @Autowired
     private TaskDetlLogService taskDetlLogService;
+    @Autowired
+    private OrderPakoutService orderPakoutService;
+    @Autowired
+    private OrderDetlPakoutService orderDetlPakoutService;
+    @Autowired
+    private AgvHandler agvHandler;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void completeWrkMast(String workNo, Long userId) {
-        Task wrkMast = this.selectOne(new EntityWrapper<Task>().eq("wrk_no", workNo));
+        Task wrkMast = this.selectOne(new EntityWrapper<Task>()
+                .eq("wrk_no", workNo)
+                .andNew("(is_deleted = 0)"));
         if (Cools.isEmpty(wrkMast)) {
             throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
         }
@@ -46,10 +55,10 @@
             throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚");
         }
         // 鍏ュ簱 + 搴撲綅杞Щ
-        if (wrkMast.getWrkSts() < 4 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType() == 11)) {
+        if (wrkMast.getIoType() < 50){
             wrkMast.setWrkSts(4L);
             // 鍑哄簱
-        } else if (wrkMast.getWrkSts() > 10) {
+        } else  {
             wrkMast.setWrkSts(14L);
         }
         Date now = new Date();
@@ -67,7 +76,9 @@
     @Override
     @Transactional
     public void pickWrkMast(String workNo, Long userId) {
-        Task wrkMast = this.selectById(workNo);
+        Task wrkMast = this.selectOne(new EntityWrapper<Task>()
+                .eq("wrk_no", workNo)
+                .andNew("(is_deleted = 0)"));
         if (Cools.isEmpty(wrkMast)) {
             throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
         }
@@ -131,14 +142,45 @@
     @Transactional
     public void cancelWrkMast(String workNo, Long userId) {
         Date now = new Date();
-        Task wrkMast = this.selectOne(new EntityWrapper<Task>().eq("wrk_no", workNo));
+        Task wrkMast = this.selectOne(new EntityWrapper<Task>()
+                .eq("wrk_no", workNo)
+                .andNew("(is_deleted = 0)"));
         if (Cools.isEmpty(wrkMast)) {
             throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
         }
+        
+        // 濡傛灉鏄疉GV浠诲姟锛屾牴鎹换鍔$姸鎬佸喅瀹氭槸鍚﹂渶瑕佽皟鐢ˋGV鎺ュ彛鍙栨秷浠诲姟
+        // 浠呯姸鎬�7锛堟柊寤篈GV浠诲姟锛変笉璁块棶AGV鐩存帴鍙栨秷锛涘叾浠栫姸鎬佸繀椤诲厛璋冪敤AGV鍙栨秷鎺ュ彛锛孉GV杩斿洖鎴愬姛鎵嶈兘鍙栨秷
+        if ("agv".equals(wrkMast.getTaskType())) {
+            Long wrkSts = wrkMast.getWrkSts();
+            if (wrkSts != null && wrkSts == 7L) {
+                // 鐘舵��7锛氭柊寤篈GV浠诲姟锛屾湭鍙戦�佺粰AGV锛屾棤闇�璋冪敤AGV鎺ュ彛锛岀洿鎺ュ彇娑�
+                String displayTaskId = (wrkMast.getWrkNo() != null) ? String.valueOf(wrkMast.getWrkNo()) : String.valueOf(wrkMast.getId());
+                log.info("鍙栨秷AGV浠诲姟锛氫换鍔D锛歿}锛岀姸鎬侊細7锛堟柊寤篈GV浠诲姟锛夛紝鏃犻渶璋冪敤AGV鎺ュ彛锛岀洿鎺ュ彇娑�", displayTaskId);
+            } else {
+                // 闈炵姸鎬�7锛堝惈8銆�9銆�10绛夛級锛氬繀椤诲厛璋冪敤AGV鍙栨秷鎺ュ彛锛孉GV杩斿洖鎴愬姛鎵嶈兘鍙栨秷
+                if (wrkMast.getId() == null) {
+                    throw new CoolException("鍙栨秷AGV浠诲姟澶辫触锛氫换鍔D涓虹┖");
+                }
+                String agvWrkNo = wrkMast.getAgvWrkNo();
+                Integer wrkNo = wrkMast.getWrkNo();
+                Long taskId = wrkMast.getId();
+                if ((agvWrkNo == null || agvWrkNo.isEmpty()) && wrkNo == null && taskId == null) {
+                    throw new CoolException("鍙栨秷AGV浠诲姟澶辫触锛氭棤娉曡幏鍙栨湁鏁堢殑浠诲姟鏍囪瘑锛坅gvWrkNo銆亀rkNo鍜宨d閮戒负绌猴級");
+                }
+                String errorMsg = agvHandler.cancelAgvTask(wrkMast);
+                if (errorMsg != null) {
+                    log.warn("鍙栨秷AGV浠诲姟澶辫触锛孉GV鏈繑鍥炴垚鍔� - 浠诲姟ID锛歿}锛岄敊璇細{}",
+                            (wrkMast.getWrkNo() != null) ? String.valueOf(wrkMast.getWrkNo()) : String.valueOf(wrkMast.getId()), errorMsg);
+                    throw new CoolException("鍙栨秷AGV浠诲姟澶辫触锛�" + errorMsg);
+                }
+            }
+        }
+        
         String locNo = ""; // 寰呬慨鏀圭洰鏍囧簱浣�
         String locSts = ""; // 寰呬慨鏀圭洰鏍囧簱浣嶇姸鎬�
         // 鍏ュ簱鍙栨秷锛堜慨鏀圭洰鏍囧簱浣嶏級
-        if (wrkMast.getWrkSts() < 4) {
+        if (wrkMast.getIoType() < 100) {
             locNo = wrkMast.getLocNo();
             locSts = "O";
 
@@ -155,7 +197,7 @@
                 locCacheService.updateById(locMast);
             }
             // 鍑哄簱鍙栨秷锛堜慨鏀规簮搴撲綅锛�
-        } else if (wrkMast.getWrkSts() > 10 && wrkMast.getWrkSts() != 14) {
+        } else {
             locNo = wrkMast.getSourceLocNo();
             // 鍑哄簱 ===>> F.鍦ㄥ簱
             if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) {
@@ -176,8 +218,6 @@
                 locMast.setModiUser(userId);
                 locCacheService.updateById(locMast);
             }
-        } else {
-            throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曞彇娑�");
         }
 
         //鍙栨秷鍏ュ簱宸ヤ綔妗f椂锛屾煡璇㈢粍鎵樿〃锛屽鏋滄湁灏嗙姸鎬佹敼涓哄緟澶勭悊
@@ -196,56 +236,7 @@
             }
         }
 
-        //鍙栨秷鍑哄簱宸ヤ綔妗f椂锛屾煡璇㈠崟鎹鐞嗚〃锛屽洖婊氫綔涓氫腑鏁伴噺
-        if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103) {
-            List<TaskDetl> wrkDetls = taskDetlService.selectList(new EntityWrapper<TaskDetl>().eq("wrk_no", wrkMast.getWrkNo()));
-            for (TaskDetl wrkDetl : wrkDetls) {
-                if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
-//                    if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
-//                        throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
-//                    }
-                    OrderInAndOutUtil.decrease(Boolean.FALSE, wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(),
-                            wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
-                            wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme());
 
-                    //淇敼璁㈠崟涓昏〃鐘舵��,娌℃湁浣滀笟鏁伴噺鏃舵墠鍙互淇敼
-                    boolean flag = true;
-//                    List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no",wrkDetl.getOrderNo()));
-                    Order order = OrderInAndOutUtil.selectByNo(Boolean.FALSE, wrkDetl.getOrderNo());
-                    List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(Boolean.FALSE, order.getId());
-                    for (OrderDetl orderDetl : orderDetls) {
-                        if (orderDetl.getWorkQty() > 0) {
-                            flag = false;
-                        }
-                    }
-                    if (flag) {
-//                        Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no",wrkDetl.getOrderNo()));
-                        if (!Cools.isEmpty(order) && order.getSettle() == 2) {
-                            order.setSettle(1L);
-                            order.setUpdateBy(userId);
-                            order.setUpdateTime(now);
-                        }
-//                        if(!orderService.update(order,new EntityWrapper<Order>().eq("order_no",wrkDetl.getOrderNo()))){
-//                            throw new CoolException("淇敼璁㈠崟鐘舵�佸け璐�");
-//                        }
-                        OrderInAndOutUtil.updateOrder(Boolean.FALSE, order.getId(), order.getSettle(), userId);
-                    }
-                }
-            }
-
-        }
-
-//        // 璁㈠崟鍏宠仈
-//        List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
-//        for (WrkDetl wrkDetl : wrkDetls) {
-//            if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
-//                if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
-//                    throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
-//                }
-//                // 鐢熸垚鏂扮殑鍑哄簱浣滀笟
-////                        stockOutRe(wrkMast, wrkDetls);
-//            }
-//        }
 
         // 鍙栨秷鎿嶄綔浜哄憳璁板綍
         wrkMast.setManuType("鎵嬪姩鍙栨秷");
@@ -258,30 +249,197 @@
         if (!taskLogService.save(wrkMast.getWrkNo())) {
             throw new CoolException("淇濆瓨宸ヤ綔鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo());
         }
-        // 鍒犻櫎宸ヤ綔涓绘。
-        boolean wrkMastRes = taskService.deleteById(wrkMast);
+        // 閫昏緫鍒犻櫎宸ヤ綔涓绘。
+        wrkMast.setIsDeleted(1);
+        boolean wrkMastRes = taskService.updateById(wrkMast);
 
         if (wrkMast.getIoType() != 10 && wrkMast.getIoType() != 110) {
-            // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
-            if (!taskDetlLogService.save(wrkMast.getWrkNo())) {
-//                throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo());
-            }
             // 鍒犻櫎宸ヤ綔妗f槑缁�
             boolean wrkDetlRes = taskDetlService.delete(new EntityWrapper<TaskDetl>().eq("wrk_no", workNo));
         }
 
-        // 淇敼搴撲綅鐘舵��
-        LocCache locMast = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", locNo));
-        if (Cools.isEmpty(locMast)) {
-            throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:" + locNo);
+        // 淇敼搴撲綅鐘舵�侊紙濡傛灉搴撲綅涓嶄负绌猴級
+        boolean locMastRes = true;
+        if (!Cools.isEmpty(locNo)&&wrkMast.getIoType() > 100) {
+            LocCache locMast = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", locNo));
+            if (Cools.isEmpty(locMast)) {
+                throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:" + locNo);
+            }
+            if (!Cools.isEmpty(locSts)) {
+                locMast.setLocSts(locSts);
+                locMast.setModiTime(now);
+                locMast.setModiUser(userId);
+                locMastRes = locCacheService.updateById(locMast);
+            }
         }
-        locMast.setLocSts(locSts);
-        locMast.setModiTime(now);
-        locMast.setModiUser(userId);
-        boolean locMastRes = locCacheService.updateById(locMast);
         if (!wrkMastRes || !locMastRes) {
             throw new CoolException("淇濆瓨鏁版嵁澶辫触");
         }
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteWrkMast(String workNo, Long userId) {
+        Date now = new Date();
+        Task wrkMast = this.selectOne(new EntityWrapper<Task>()
+                .eq("wrk_no", workNo)
+                .andNew("(is_deleted = 0)"));
+        if (Cools.isEmpty(wrkMast)) {
+            throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
+        }
+        
+        String displayTaskId = (wrkMast.getWrkNo() != null) ? String.valueOf(wrkMast.getWrkNo()) : String.valueOf(wrkMast.getId());
+        
+        // 濡傛灉鏄疉GV浠诲姟锛屽皾璇曞悓姝ョ敵璇稟GV鍙栨秷锛堜絾涓嶄細琚獳GV杩斿洖鐨勯敊璇牎楠屾嫤鎴紝浼氱户缁垹闄わ級
+        if ("agv".equals(wrkMast.getTaskType())) {
+            Long wrkSts = wrkMast.getWrkSts();
+            // 鐘舵��8鍜�9锛氬凡鍙戦�佺粰AGV浠诲姟锛屽皾璇曡皟鐢ˋGV鎺ュ彛鍙栨秷浠诲姟
+            // 鐘舵��10锛欰GV鍛煎彨寮傚父锛屽彲浠ュ彇娑堬紝浣嗕笉浼氳姹侫GV鍙栨秷鎺ュ彛
+            // 鐘舵��7鎴栨洿鏃╋細杩樻湭鍙戦�佺粰AGV锛屾棤闇�璋冪敤AGV鎺ュ彛
+            if (wrkSts != null && wrkSts >= 8L && wrkSts != 10L) {
+                try {
+                    // 楠岃瘉浠诲姟淇℃伅鏄惁瀹屾暣
+                    if (wrkMast.getId() != null) {
+                        // 楠岃瘉taskId鏄惁鍙敤锛坅gvWrkNo銆亀rkNo鎴杋d鑷冲皯鏈変竴涓級
+                        String agvWrkNo = wrkMast.getAgvWrkNo();
+                        Integer wrkNo = wrkMast.getWrkNo();
+                        Long taskId = wrkMast.getId();
+                        if ((agvWrkNo != null && !agvWrkNo.isEmpty()) || wrkNo != null || taskId != null) {
+                            // 鍚屾鐢宠AGV鍙栨秷锛屼絾涓嶆姏鍑哄紓甯革紙涓嶄細琚敊璇牎楠屾嫤鎴級
+                            String errorMsg = agvHandler.cancelAgvTask(wrkMast);
+                            if (errorMsg != null) {
+                                log.warn("鍒犻櫎AGV浠诲姟锛氬皾璇曞彇娑圓GV浠诲姟澶辫触锛屼絾缁х画鎵ц鍒犻櫎鎿嶄綔锛屼换鍔D锛歿}锛岄敊璇細{}", displayTaskId, errorMsg);
+                            } else {
+                                log.info("鍒犻櫎AGV浠诲姟锛氭垚鍔熷彇娑圓GV浠诲姟锛屼换鍔D锛歿}", displayTaskId);
+                            }
+                        } else {
+                            log.warn("鍒犻櫎AGV浠诲姟锛氭棤娉曡幏鍙栨湁鏁堢殑浠诲姟鏍囪瘑锛坅gvWrkNo銆亀rkNo鍜宨d閮戒负绌猴級锛岃烦杩嘇GV鍙栨秷锛岀户缁墽琛屽垹闄ゆ搷浣滐紝浠诲姟ID锛歿}", displayTaskId);
+                        }
+                    } else {
+                        log.warn("鍒犻櫎AGV浠诲姟锛氫换鍔D涓虹┖锛岃烦杩嘇GV鍙栨秷锛岀户缁墽琛屽垹闄ゆ搷浣滐紝浠诲姟ID锛歿}", displayTaskId);
+                    }
+                } catch (Exception e) {
+                    // 鎹曡幏鎵�鏈夊紓甯革紝璁板綍鏃ュ織浣嗕笉闃绘鍒犻櫎鎿嶄綔锛堜笉浼氳AGV杩斿洖鐨勯敊璇牎楠屾嫤鎴級
+                    log.error("鍒犻櫎AGV浠诲姟锛氬皾璇曞彇娑圓GV浠诲姟鏃跺彂鐢熷紓甯革紝浣嗙户缁墽琛屽垹闄ゆ搷浣滐紝浠诲姟ID锛歿}", displayTaskId, e);
+                }
+            } else {
+                // 鐘舵��10锛圓GV鍛煎彨寮傚父锛夋垨鐘舵��7鎴栨洿鏃╋紝鏃犻渶璋冪敤AGV鎺ュ彛
+                if (wrkSts != null && wrkSts == 10L) {
+                    log.info("鍒犻櫎AGV浠诲姟锛氫换鍔D锛歿}锛岀姸鎬侊細{}锛圓GV鍛煎彨寮傚父锛夛紝鏃犻渶璋冪敤AGV鎺ュ彛锛岀洿鎺ュ垹闄�", displayTaskId, wrkSts);
+                } else {
+                    log.info("鍒犻櫎AGV浠诲姟锛氫换鍔D锛歿}锛岀姸鎬侊細{}锛堝緟鍛煎彨AGV鎴栨洿鏃╋級锛屾棤闇�璋冪敤AGV鎺ュ彛锛岀洿鎺ュ垹闄�", displayTaskId, wrkSts);
+                }
+            }
+        }
+        
+        // 閲婃斁搴撲綅绛夎祫婧愶紙绫讳技cancelWrkMast鐨勯�昏緫锛�
+        String locNo = ""; // 寰呬慨鏀圭洰鏍囧簱浣�
+        String locSts = ""; // 寰呬慨鏀圭洰鏍囧簱浣嶇姸鎬�
+        // 鍏ュ簱鍙栨秷锛堜慨鏀圭洰鏍囧簱浣嶏級
+        if (wrkMast.getIoType() < 100) {
+            locNo = wrkMast.getLocNo();
+            locSts = "O";
+
+            // 搴撲綅杞Щ
+            if (wrkMast.getIoType() == 11) {
+                // 搴撲綅杞Щ锛氭簮搴撲綅
+                LocCache locMast = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", wrkMast.getSourceLocNo()));
+                if (!Cools.isEmpty(locMast)) {
+                    locMast.setLocSts(wrkMast.getFullPlt().equalsIgnoreCase("N") ? "D" : "F");
+                    locMast.setModiTime(now);
+                    locMast.setModiUser(userId);
+                    locCacheService.updateById(locMast);
+                }
+            }
+            // 鍑哄簱鍙栨秷锛堜慨鏀规簮搴撲綅锛�
+        } else {
+            locNo = wrkMast.getSourceLocNo();
+            // 鍑哄簱 ===>> F.鍦ㄥ簱
+            if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) {
+                locSts = "F";
+                // 绌烘澘鍑哄簱 ===>> D.绌烘《/绌烘爤鏉�
+            } else if (wrkMast.getIoType() == 110) {
+                locSts = "D";
+                // 搴撲綅杞Щ ===>> D.绌烘《/绌烘爤鏉�
+            } else if (wrkMast.getIoType() == 11) {
+                locSts = wrkMast.getFullPlt().equalsIgnoreCase("N") ? "D" : "F";
+                // 搴撲綅杞Щ锛氱洰鏍囧簱浣�
+                LocCache locMast = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", wrkMast.getLocNo()));
+                if (!Cools.isEmpty(locMast)) {
+                    locMast.setLocSts("O");
+                    locMast.setModiTime(now);
+                    locMast.setModiUser(userId);
+                    locCacheService.updateById(locMast);
+                }
+            }
+        }
+
+        //鍙栨秷鍏ュ簱宸ヤ綔妗f椂锛屾煡璇㈢粍鎵樿〃锛屽鏋滄湁灏嗙姸鎬佹敼涓哄緟澶勭悊
+        if (wrkMast.getIoType() == 1) {
+            List<WaitPakin> waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()));
+            for (WaitPakin waitPakin : waitPakins) {
+                if (!Cools.isEmpty(waitPakin)) {
+                    waitPakin.setIoStatus("N");
+                    waitPakin.setLocNo("");
+                    waitPakinService.update(waitPakin, new EntityWrapper<WaitPakin>()
+                            .eq("zpallet", waitPakin.getZpallet())
+                            .eq("matnr", waitPakin.getMatnr())
+                            .eq("batch", waitPakin.getBatch()));
+                }
+            }
+        }
+
+        // 鍒犻櫎鎿嶄綔浜哄憳璁板綍
+        wrkMast.setManuType("鎵嬪姩鍒犻櫎");
+        wrkMast.setModiUser(userId);
+        wrkMast.setModiTime(now);
+        // 閫昏緫鍒犻櫎宸ヤ綔涓绘。
+        wrkMast.setIsDeleted(1);
+        if (!taskService.updateById(wrkMast)) {
+            throw new CoolException("鍒犻櫎宸ヤ綔妗eけ璐�");
+        }
+
+        if (wrkMast.getIoType() != 10 && wrkMast.getIoType() != 110) {
+            // 鍒犻櫎宸ヤ綔妗f槑缁�
+            taskDetlService.delete(new EntityWrapper<TaskDetl>().eq("wrk_no", workNo));
+        }
+
+        // 淇敼搴撲綅鐘舵�侊紙濡傛灉搴撲綅涓嶄负绌猴級
+        if (!Cools.isEmpty(locNo) && wrkMast.getIoType() > 100) {
+            LocCache locMast = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", locNo));
+            if (!Cools.isEmpty(locMast) && !Cools.isEmpty(locSts)) {
+                locMast.setLocSts(locSts);
+                locMast.setModiTime(now);
+                locMast.setModiUser(userId);
+                locCacheService.updateById(locMast);
+            }
+        }
+        
+        // 濡傛灉鏄叆搴撲换鍔★紝閲婃斁棰勭害搴撲綅
+        if (wrkMast.getIoType() != null && wrkMast.getIoType() < 100 && !Cools.isEmpty(wrkMast.getLocNo())) {
+            try {
+                LocCache locCache = locCacheService.selectOne(
+                        new EntityWrapper<LocCache>().eq("loc_no", wrkMast.getLocNo())
+                );
+                if (locCache != null && "S".equals(locCache.getLocSts())) {
+                    // 搴撲綅鐘舵�佷负S锛堝叆搴撻绾︼級锛岄噴鏀句负O锛堥棽缃級
+                    locCache.setLocSts("O");
+                    locCache.setModiTime(now);
+                    locCache.setModiUser(userId);
+                    locCacheService.updateById(locCache);
+                    log.info("鍒犻櫎AGV浠诲姟锛氬凡閲婃斁棰勭害搴撲綅锛歿}锛圫鈫扥锛夛紝浠诲姟ID锛歿}", wrkMast.getLocNo(), displayTaskId);
+                }
+            } catch (Exception e) {
+                log.warn("鍒犻櫎AGV浠诲姟锛氶噴鏀鹃绾﹀簱浣嶅け璐ワ紝搴撲綅锛歿}锛屼换鍔D锛歿}", wrkMast.getLocNo(), displayTaskId, e);
+            }
+        }
+        
+        log.info("鍒犻櫎AGV浠诲姟鎴愬姛锛氫换鍔D锛歿}锛屽伐浣滃彿锛歿}", displayTaskId, workNo);
+    }
+
+    @Override
+    public List<Task> selectToBeHistoryData() {
+        return this.baseMapper.selectToBeHistoryData();
+    }
+
 }

--
Gitblit v1.9.1