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/task/AgvScheduler.java |   75 ++++++++++++++++++++++++-------------
 1 files changed, 49 insertions(+), 26 deletions(-)

diff --git a/src/main/java/com/zy/asrs/task/AgvScheduler.java b/src/main/java/com/zy/asrs/task/AgvScheduler.java
index 2d988a7..15ba6c8 100644
--- a/src/main/java/com/zy/asrs/task/AgvScheduler.java
+++ b/src/main/java/com/zy/asrs/task/AgvScheduler.java
@@ -27,6 +27,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -90,7 +91,7 @@
      * 姣忔鍙鐞嗕竴涓换鍔★紝閬垮厤楂樺苟鍙戞墽琛�
      * 浣跨敤AtomicBoolean纭繚鍗曠嚎绋嬫墽琛屽惊鐜�
      */
-    @Scheduled(cron = "0/5 * * * * ? ")
+    @Scheduled(cron = "0/15 * * * * ? ")
     private void allocateSite() {
         if (!schedulerProperties.isEnabled()) {
             log.debug("瀹氭椂浠诲姟allocateSite锛氳皟搴﹀櫒鏈惎鐢紝璺宠繃鎵ц");
@@ -276,7 +277,7 @@
         if (!schedulerProperties.isEnabled()) {
             return;
         }
-        List<Task> taskList = taskService.selectList(new EntityWrapper<Task>().eq("wrk_sts", 9).eq("is_deleted", 0));
+        List<Task> taskList = taskService.selectList(new EntityWrapper<Task>().in("wrk_sts", 9L,10L).eq("is_deleted", 0));
         if (taskList.isEmpty()) {
             return;
         }
@@ -538,12 +539,33 @@
                     );
                 }
                 // 濡傛灉閫氳繃wrk_no娌℃壘鍒帮紝涓旀湁鏉$爜锛屽垯閫氳繃鏉$爜鏌ヨ
+                // 娉ㄦ剰锛氶�氳繃鏉$爜鏌ヨ鏃讹紝闇�瑕侀獙璇佸伐浣滄。鏄惁鐪熺殑宸插畬鎴愶紙閫氳繃wrk_no鍖归厤锛夛紝閬垮厤閲嶅鏉$爜瀵艰嚧璇垽
                 if (wrkMastLog == null && !Cools.isEmpty(agvTask.getBarcode())) {
-                    List<WrkMastLog> logList = wrkMastLogService.selectList(
-                            new EntityWrapper<WrkMastLog>().eq("barcode", agvTask.getBarcode())
-                    );
-                    if (!logList.isEmpty()) {
-                        wrkMastLog = logList.get(0); // 鍙栫涓�涓�
+                    // 鏋勫缓鏌ヨ鏉′欢锛氭潯鐮佸尮閰嶏紝涓斿巻鍙叉。鍒涘缓鏃堕棿鍦ˋGV璁㈠崟鍒涘缓鏃堕棿涔嬪悗锛屼笖涓嶈秴杩嘇GV鍒涘缓鏃堕棿涔嬪悗6灏忔椂
+                    Wrapper<WrkMastLog> logWrapper = new EntityWrapper<WrkMastLog>()
+
+                            .eq("barcode", agvTask.getBarcode());
+                    // 濡傛灉AGV璁㈠崟鏈夊垱寤烘椂闂达紝娣诲姞鏃堕棿杩囨护鏉′欢
+                    if (agvTask.getAppeTime() != null) {
+                        // 璁$畻AGV鍒涘缓鏃堕棿涔嬪悗6灏忔椂鐨勬椂闂�
+                        Calendar calendar = Calendar.getInstance();
+                        calendar.setTime(agvTask.getAppeTime());
+                        calendar.add(Calendar.HOUR_OF_DAY, 6); // 鍔�6灏忔椂
+                        Date endTime = calendar.getTime();
+                        // 鏌ヨ鏉′欢锛氬巻鍙叉。鍒涘缓鏃堕棿 >= AGV璁㈠崟鍒涘缓鏃堕棿 涓� <= AGV鍒涘缓鏃堕棿涔嬪悗6灏忔椂
+                        logWrapper = logWrapper.ge("appe_time", agvTask.getAppeTime())
+                                .le("appe_time", endTime)
+                                .eq("barcode", agvTask.getBarcode())
+                        ;
+                    }
+                    List<WrkMastLog> logList = wrkMastLogService.selectList(logWrapper);
+                    // 杩囨护锛氬彧淇濈暀宸ヤ綔鍙峰尮閰嶇殑鍘嗗彶妗o紝閬垮厤閲嶅鏉$爜瀵艰嚧璇垽
+                    for (WrkMastLog log : logList) {
+                        if (agvTask.getWrkNo() != null && log.getWrkNo() != null && 
+                                log.getWrkNo().equals(agvTask.getWrkNo())) {
+                            wrkMastLog = log;
+                            break;
+                        }
                     }
                 }
 
@@ -607,13 +629,11 @@
                 String displayTaskId = (agvTask.getWrkNo() != null) ? String.valueOf(agvTask.getWrkNo()) : String.valueOf(agvTask.getId());
                 // 濡傛灉璁㈠崟鍒涘缓瓒呰繃浜斿垎閽燂紝鏌ヨAGV璁㈠崟鐘舵��
                 if (shouldCheckAgvStatus) {
-                    String agvOrderStatus = queryAgvOrderStatus(agvTask, displayTaskId);
-                    if (agvOrderStatus != null) {
-                        // 鏍规嵁璁㈠崟鐘舵�佸鐞�
-                        boolean shouldComplete = processAgvOrderStatus(agvTask, agvOrderStatus, displayTaskId, now);
-                        if (shouldComplete) {
-                            completedTasks.add(agvTask);
-                        }
+                    // queryAgvOrderStatus鍐呴儴宸茬粡璋冪敤processAgvOrderStatus杩涜褰掔被澶勭悊
+                    // 杩斿洖true琛ㄧず搴旇瀹岀粨璁㈠崟锛屾坊鍔犲埌瀹屾垚鍒楄〃
+                    boolean shouldComplete = queryAgvOrderStatus(agvTask, displayTaskId);
+                    if (shouldComplete) {
+                        completedTasks.add(agvTask);
                     }
                 }
 
@@ -638,12 +658,12 @@
     }
 
     /**
-     * 鏌ヨAGV璁㈠崟鐘舵��
+     * 鏌ヨAGV璁㈠崟鐘舵�佸苟褰掔被澶勭悊
      * @param agvTask AGV浠诲姟
      * @param displayTaskId 鏄剧ず鐨勪换鍔D
-     * @return 璁㈠崟鐘舵�侊紙Building/Created/Assigned/Failed/Done/Cancelled锛夛紝濡傛灉鏌ヨ澶辫触杩斿洖null
+     * @return true琛ㄧず搴旇瀹岀粨璁㈠崟锛宖alse琛ㄧず涓嶅簲璇ュ畬缁擄紙璺宠繃锛夛紝濡傛灉鏌ヨ澶辫触杩斿洖false
      */
-    private String queryAgvOrderStatus(Task agvTask, String displayTaskId) {
+    private boolean queryAgvOrderStatus(Task agvTask, String displayTaskId) {
         try {
             // 鏋勫缓璁㈠崟ID锛屼紭鍏堜娇鐢╝gvWrkNo锛屽鏋滀负绌哄垯浣跨敤T+wrkNo锛堝悜鍚庡吋瀹癸級
             String orderId = agvTask.getAgvWrkNo();
@@ -656,7 +676,7 @@
                     agvTask.setErrorMemo2(errorMsg);
                     agvTask.setErrorTime2(new Date());
                     taskService.updateById(agvTask);
-                    return null;
+                    return false;
                 }
             }
 
@@ -687,7 +707,7 @@
                 agvTask.setErrorMemo2(errorMsg);
                 agvTask.setErrorTime2(new Date());
                 taskService.updateById(agvTask);
-                return null;
+                return false;
             }
 
             // 瑙f瀽鍝嶅簲
@@ -697,7 +717,7 @@
                 agvTask.setErrorMemo2(errorMsg);
                 agvTask.setErrorTime2(new Date());
                 taskService.updateById(agvTask);
-                return null;
+                return false;
             }
 
             try {
@@ -712,7 +732,7 @@
                     agvTask.setErrorMemo2(errorMsg);
                     agvTask.setErrorTime2(new Date());
                     taskService.updateById(agvTask);
-                    return null;
+                    return false;
                 }
 
                 // 鑾峰彇璁㈠崟淇℃伅
@@ -721,14 +741,17 @@
                     String status = entityValue.getString("status");
                     if (status != null) {
                         log.info("鏌ヨAGV璁㈠崟鐘舵�佹垚鍔� - 浠诲姟ID锛歿}锛岃鍗旾D锛歿}锛岀姸鎬侊細{}", displayTaskId, orderId, status);
-                        return status;
+                        // 鏌ヨ鍚庝娇鐢╬rocessAgvOrderStatus鏂规硶褰掔被
+                        Date now = new Date();
+                        boolean shouldComplete = processAgvOrderStatus(agvTask, status, displayTaskId, now);
+                        return shouldComplete;
                     } else {
                         String errorMsg = String.format("鏌ヨAGV璁㈠崟鐘舵�佸搷搴斾腑缂哄皯status瀛楁锛岃姹傦細%s锛屽搷搴旓細%s", requestBody, response);
                         log.warn("鏌ヨAGV璁㈠崟鐘舵�佸け璐� - 浠诲姟ID锛歿}锛岃鍗旾D锛歿}锛寋}", displayTaskId, orderId, errorMsg);
                         agvTask.setErrorMemo2(errorMsg);
                         agvTask.setErrorTime2(new Date());
                         taskService.updateById(agvTask);
-                        return null;
+                        return false;
                     }
                 } else {
                     String errorMsg = String.format("鏌ヨAGV璁㈠崟鐘舵�佸搷搴斾腑缂哄皯entityValue瀛楁锛岃姹傦細%s锛屽搷搴旓細%s", requestBody, response);
@@ -736,7 +759,7 @@
                     agvTask.setErrorMemo2(errorMsg);
                     agvTask.setErrorTime2(new Date());
                     taskService.updateById(agvTask);
-                    return null;
+                    return false;
                 }
             } catch (com.alibaba.fastjson.JSONException e) {
                 String errorMsg = String.format("瑙f瀽AGV璁㈠崟鐘舵�佸搷搴擩SON澶辫触锛�%s锛岃姹傦細%s锛屽搷搴旓細%s", e.getMessage(), requestBody, response);
@@ -744,7 +767,7 @@
                 agvTask.setErrorMemo2(errorMsg);
                 agvTask.setErrorTime2(new Date());
                 taskService.updateById(agvTask);
-                return null;
+                return false;
             }
         } catch (Exception e) {
             String errorMsg = String.format("鏌ヨAGV璁㈠崟鐘舵�佸紓甯革細%s", e.getMessage());
@@ -752,7 +775,7 @@
             agvTask.setErrorMemo2(errorMsg);
             agvTask.setErrorTime2(new Date());
             taskService.updateById(agvTask);
-            return null;
+            return false;
         }
     }
 

--
Gitblit v1.9.1