From aa0c2969838c2a794d9a45da7d4b67c5f6cb70a5 Mon Sep 17 00:00:00 2001
From: chen.llin <1442464845@qq.comm>
Date: 星期四, 01 一月 2026 15:23:13 +0800
Subject: [PATCH] AGV回调

---
 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java |   95 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 95 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
index ce9be2c..70d664c 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
 import com.core.common.DateUtils;
+import com.core.common.R;
 import com.core.common.SnowflakeIdWorker;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
@@ -19,6 +20,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -53,6 +55,99 @@
     @Autowired
     private TagMapper tagMapper;
 
+    @Resource
+    private TaskService taskService;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R agvCallback(AgvCallbackDto param) {
+        log.debug("agvCallback param:{}", param);
+        // 浼樺厛浣跨敤taskId锛屽鏋滄病鏈夊垯浣跨敤id锛堝悜鍚庡吋瀹癸級
+        String taskId = Cools.isEmpty(param.getTaskId()) ? param.getId() : param.getTaskId();
+        if (Cools.isEmpty(taskId)) {
+            return R.error("浠诲姟id涓嶈兘涓虹┖");
+        }
+        
+        log.info("鏀跺埌AGV浠诲姟鍥炶皟璇锋眰锛宼askId锛歿}锛宖romBin锛歿}锛宼oBin锛歿}锛宺obotGroup锛歿}锛宬ind锛歿}", 
+            taskId, param.getFromBin(), param.getToBin(), 
+            Cools.isEmpty(param.getRobotGroup()) ? param.getRobotName() : param.getRobotGroup(), 
+            param.getKind());
+        
+        // 鏍规嵁taskId鏌ヨ浠诲姟
+        Task task = null;
+        try {
+            // 灏濊瘯灏唗askId瑙f瀽涓篖ong绫诲瀷鐨刬d
+            Long taskIdLong = Long.parseLong(taskId);
+            task = taskService.selectById(taskIdLong);
+        } catch (NumberFormatException e) {
+            // 濡傛灉涓嶆槸鏁板瓧锛屽皾璇曢�氳繃鍏朵粬瀛楁鏌ヨ锛堝sheetNo绛夛級
+            log.debug("taskId涓嶆槸鏁板瓧鏍煎紡锛屽皾璇曢�氳繃鍏朵粬瀛楁鏌ヨ锛宼askId锛歿}", taskId);
+            task = taskService.selectOne(
+                new EntityWrapper<Task>().eq("sheet_no", taskId)
+            );
+        }
+        
+        if (task == null) {
+            log.warn("鏈壘鍒板搴旂殑浠诲姟锛宼askId锛歿}", taskId);
+            return R.error("浠诲姟涓嶅瓨鍦紝taskId锛�" + taskId);
+        }
+        
+        // 鏇存柊浠诲姟淇℃伅
+        if (!Cools.isEmpty(param.getFromBin())) {
+            task.setSourceStaNo(param.getFromBin());
+        }
+        if (!Cools.isEmpty(param.getToBin())) {
+            task.setLocNo(param.getToBin());
+        }
+        
+        // 浼樺厛浣跨敤robotGroup锛屽鏋滄病鏈夊垯浣跨敤robotName锛堝悜鍚庡吋瀹癸級
+        String robotGroup = Cools.isEmpty(param.getRobotGroup()) ? param.getRobotName() : param.getRobotGroup();
+        if (!Cools.isEmpty(robotGroup)) {
+            task.setInvWh(robotGroup);
+        }
+        
+        task.setModiTime(new Date());
+        
+        // 濡傛灉鏈塻tatus瀛楁锛屾寜鍘熸湁閫昏緫澶勭悊锛堝悜鍚庡吋瀹癸級
+        if (!Cools.isEmpty(param.getStatus())) {
+            switch (param.getStatus()) {
+                case "Assigned":
+                    if (Cools.isEmpty(robotGroup)) {
+                        task.setInvWh(param.getRobotName());
+                    }
+                    break;
+                case "Done":
+                    task.setWrkSts(9L);
+                    break;
+                case "Failed":
+                case "Cancelled":
+                default:
+                    break;
+            }
+        }
+        
+        // 鏍规嵁浠诲姟绫诲瀷杩涜鐩稿簲澶勭悊
+        if (!Cools.isEmpty(param.getKind())) {
+            String kind = param.getKind();
+            if ("璐х墿杞繍".equals(kind)) {
+                log.info("澶勭悊璐х墿杞繍浠诲姟锛宼askId锛歿}", taskId);
+            } else if ("瀹炴墭鍏ュ簱".equals(kind)) {
+                log.info("澶勭悊瀹炴墭鍏ュ簱浠诲姟锛宼askId锛歿}", taskId);
+            } else if ("瀹炴墭鍑哄簱".equals(kind)) {
+                log.info("澶勭悊瀹炴墭鍑哄簱浠诲姟锛宼askId锛歿}", taskId);
+            }
+        }
+        
+        // 淇濆瓨浠诲姟鏇存柊
+        if (!taskService.updateById(task)) {
+            log.error("鏇存柊浠诲姟澶辫触锛宼askId锛歿}", taskId);
+            return R.error("鏇存柊浠诲姟澶辫触");
+        }
+        
+        log.info("AGV浠诲姟鍥炶皟澶勭悊鎴愬姛锛宼askId锛歿}", taskId);
+        return R.ok();
+    }
+
     @Override
     @Transactional
     public void pakinOrderCreate(OpenOrderPakinParam param) {

--
Gitblit v1.9.1