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/handler/AgvHandler.java |   72 +++++++++++++++++++++---------------
 1 files changed, 42 insertions(+), 30 deletions(-)

diff --git a/src/main/java/com/zy/asrs/task/handler/AgvHandler.java b/src/main/java/com/zy/asrs/task/handler/AgvHandler.java
index 65b194a..1a0006c 100644
--- a/src/main/java/com/zy/asrs/task/handler/AgvHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/AgvHandler.java
@@ -3,28 +3,20 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.core.common.Cools;
-import com.zy.asrs.entity.Task;
-import com.zy.asrs.entity.TaskLog;
-import com.zy.asrs.entity.WrkMast;
-import com.zy.asrs.entity.BasDevp;
-import com.zy.asrs.entity.LocCache;
+import com.zy.asrs.entity.*;
 import com.zy.asrs.mapper.BasDevpMapper;
 import com.zy.asrs.mapper.BasStationMapper;
 import com.zy.asrs.mapper.WrkMastMapper;
-import com.zy.asrs.service.ApiLogService;
-import com.zy.asrs.service.LocCacheService;
-import com.zy.asrs.service.TaskLogService;
-import com.zy.asrs.service.TaskService;
-import com.zy.asrs.service.WrkMastService;
-import com.zy.asrs.service.WrkMastLogService;
-import com.zy.asrs.entity.WrkMastLog;
+import com.zy.asrs.service.*;
 import com.zy.common.constant.ApiInterfaceConstant;
 import com.zy.common.properties.AgvProperties;
 import com.zy.common.utils.AgvUtils;
 import com.zy.common.utils.HttpHandler;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -72,7 +64,8 @@
 
     @Resource
     private WrkMastLogService wrkMastLogService;
-
+    @Resource
+    private LocMastService locMastService;
     /**
      * 绔欑偣杞璁℃暟鍣紝鐢ㄤ簬骞冲潎鍒嗛厤绔欑偣
      * Key: 绔欑偣缁勬爣璇嗭紙濡� "east" 鎴� "west"锛夛紝Value: 褰撳墠杞绱㈠紩
@@ -91,6 +84,7 @@
      * @param taskList 浠诲姟鍒楄〃锛堥�氬父鍙寘鍚竴涓换鍔★級
      * @return 鏄惁鎴愬姛澶勭悊浜嗕换鍔★紙鎴愬姛鍛煎彨AGV锛岀姸鎬佷粠7鍙樹负8锛�
      */
+    @Transactional(rollbackFor = Exception.class)
     public boolean callAgv(List<Task> taskList) {
         // 璁板綍璋冪敤鍫嗘爤锛岀‘淇濆彧鑳戒粠瀹氭椂浠诲姟璋冪敤
         StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
@@ -515,24 +509,36 @@
             WrkMast wrkMast = null;
             if (agvTask.getWrkNo() != null) {
                 wrkMast = wrkMastService.selectOne(
-                        new EntityWrapper<WrkMast>().eq("wrk_no", agvTask.getWrkNo())
+                        new EntityWrapper<WrkMast>()
+                                .eq("barcode", agvTask.getBarcode())
                 );
             }
 
             // 妫�鏌ュ巻鍙叉。鏄惁瀛樺湪
             WrkMastLog wrkMastLog = null;
-            if (agvTask.getWrkNo() != null) {
-                wrkMastLog = wrkMastLogService.selectOne(
-                        new EntityWrapper<WrkMastLog>().eq("wrk_no", agvTask.getWrkNo())
+            if (agvTask.getBarcode() != null) {
+                Wrapper<WrkMastLog> wrkMastLogMapper = new EntityWrapper<WrkMastLog>()
+                        .eq("barcode", agvTask.getBarcode());
+                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灏忔椂
+                    wrkMastLogMapper = wrkMastLogMapper.ge("appe_time", agvTask.getAppeTime())
+                            .le("appe_time", endTime).eq("barcode", agvTask.getBarcode()).orderBy("appe_time DESC");
+                }
+                List<WrkMastLog> wrkMastLogList = wrkMastLogService.selectList(
+                        wrkMastLogMapper
                 );
-            }
-            // 濡傛灉閫氳繃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);
+                if(wrkMastLogList.size()==1){
+                    wrkMastLog=wrkMastLogList.get(0);
+                }else if(wrkMastLogList.size()>1){
+                    int locmastCount = locMastService.selectCount(new EntityWrapper<LocMast>().eq("loc_sts", "F").eq("barcode", agvTask.getBarcode()));
+                        if(locmastCount>0){
+                            wrkMastLog=wrkMastLogList.get(0);
+                        }
                 }
             }
 
@@ -1075,16 +1081,16 @@
      * 鍙栨秷AGV浠诲姟锛堜粰宸4鎺ュ彛锛�
      *
      * @param task 浠诲姟瀵硅薄
-     * @return 鏄惁鎴愬姛
+     * @return 鎴愬姛杩斿洖 null锛屽け璐ヨ繑鍥為敊璇師鍥�
      */
-    public boolean cancelAgvTask(Task task) {
+    public String cancelAgvTask(Task task) {
         if (!agvProperties.isSendTask()) {
-            return false;
+            return "鏈惎鐢ˋGV浠诲姟涓嬪彂";
         }
 
         if (task == null || task.getId() == null) {
             log.error("鍙栨秷AGV浠诲姟澶辫触锛氫换鍔℃垨浠诲姟ID涓虹┖");
-            return false;
+            return "浠诲姟鎴栦换鍔D涓虹┖";
         }
 
         String response = "";
@@ -1147,10 +1153,16 @@
                 String displayTaskId = (task.getWrkNo() != null) ? String.valueOf(task.getWrkNo()) : String.valueOf(task.getId());
                 log.info(namespace + "鍙栨秷AGV浠诲姟鎴愬姛锛歿}", displayTaskId);
             } else {
+                String errMsg = jsonObject.getString("message");
+                if (errMsg == null || errMsg.isEmpty()) {
+                    errMsg = "response: " + response;
+                }
                 log.error(namespace + "鍙栨秷AGV浠诲姟澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", url, body, response);
+                return errMsg;
             }
         } catch (Exception e) {
             log.error(namespace + "鍙栨秷AGV浠诲姟寮傚父", e);
+            return e.getMessage() != null ? e.getMessage() : "鍙栨秷AGV浠诲姟寮傚父";
         } finally {
             try {
                 // 淇濆瓨鎺ュ彛鏃ュ織
@@ -1168,6 +1180,6 @@
             }
         }
 
-        return success;
+        return success ? null : "鍙栨秷AGV浠诲姟澶辫触";
     }
 }

--
Gitblit v1.9.1