From ef24ea7286c496625dfc74aff2723ffdbd9b0049 Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期一, 29 十二月 2025 11:11:00 +0800
Subject: [PATCH] #

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java |   85 +++++++++++++++++++++++++-----------------
 1 files changed, 51 insertions(+), 34 deletions(-)

diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
index 7cb0de0..b3058b4 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
@@ -1464,45 +1464,62 @@
         // 鍙栨斁璐ц姹傚寘
         if (msgBody instanceof AGV_06_UP) {
             AGV_06_UP agv_06_up = (AGV_06_UP) msgBody;
-
             log.info("Agv [{}] 鍙栨斁璐ц姹傚寘 ===>> {}", protocol.getAgvNo(), JSON.toJSONString(agv_06_up));
 
-            // query current segment
-            Segment currSeg = segmentService.getCurrRunningSeg(agv.getId(), agv_06_up.getQrCode());
-            if (null == currSeg) {
-                log.error("failed to find curr segment [{}]", agv.getUuid());
-            } else {
+            boolean success = false;
 
-                boolean responseAck = true;
-                TaskPosDto.PosType posType = TaskPosDto.PosType.of(currSeg.getPosType());
-                assert null != posType;
-                switch (posType) {
-                    case ORI_LOC:
-                    case DEST_LOC:
-                        break;
-                    case ORI_STA:
-                    case DEST_STA:
-                        // todo
-                        break;
-                    default:
-                        responseAck = false;
-                        log.error("agv[{}] has wrong posType [{}], segment [{}]", protocol.getAgvNo(), posType.toString(), currSeg.getId());
-                        break;
+            try {
+                Code code = codeService.getCacheByData(agv_06_up.getQrCode());
+
+                // query current segment
+                Segment currSeg = segmentService.getCurrRunningSeg(agv.getId(), code.getId());
+                if (null == currSeg) {
+                    log.error("failed to find curr segment [{}]", agv.getUuid());
+                } else {
+
+                    // query current task
+                    Task currTask = taskService.getById(currSeg.getTaskId());
+                    if (currTask == null || !currTask.getTaskSts().equals(TaskStsType.PROGRESS.val())) {
+
+                        log.error("agv[{}] task invalid, task={}", protocol.getAgvNo(), currSeg.getTaskId());
+                    } else {
+
+                        Sta sta;
+                        TaskPosDto.PosType posType = TaskPosDto.PosType.of(currSeg.getPosType());
+                        assert null != posType;
+                        switch (posType) {
+                            case ORI_LOC:
+                            case DEST_LOC:
+                                success = true;
+                                break;
+                            case ORI_STA:
+                                sta = staService.getById(currTask.getOriSta());
+                                success = staReserveService.waitingStaReserve(sta, currTask, 1, StaReserveType.OUT);
+                                // load sta
+                                // remove expiredTime
+                                break;
+                            case DEST_STA:
+                                // place sta
+                                sta = staService.getById(currTask.getDestSta());
+                                success = staReserveService.waitingStaReserve(sta, currTask, 1, StaReserveType.IN);
+                                break;
+                            default:
+                                log.error("agv[{}] has wrong posType [{}], segment [{}]", protocol.getAgvNo(), posType.toString(), currSeg.getId());
+                                break;
+                        }
+                    }
+
                 }
-
-                if (responseAck) {
-
-                    // todo:vincent 鏍¢獙鏄惁鍙互鍙栨斁璐�
-
-                    AGV_06_DOWN agv_06_down = new AGV_06_DOWN();
-                    agv_06_down.setSerialNo(agv_06_up.getSerialNo());
-                    agv_06_down.setActionCode(agv_06_up.getActionCode());
-                    agv_06_down.setResult(1);
-
-                    redis.push(RedisConstant.AGV_PATH_DOWN_FLAG, AgvProtocol.build(protocol.getAgvNo()).setMessageBody(agv_06_down));
-                }
-
+            } catch (Exception e) {
+                log.error("agv[{}] failed to deal with action request, qrCode={}", agv.getUuid(), agv_06_up.getVal(), e);
             }
+
+            AGV_06_DOWN agv_06_down = new AGV_06_DOWN();
+            agv_06_down.setSerialNo(agv_06_up.getSerialNo());
+            agv_06_down.setActionCode(agv_06_up.getActionCode());
+            agv_06_down.setResult(success ? 1 : 0);
+
+            redis.push(RedisConstant.AGV_PATH_DOWN_FLAG, AgvProtocol.build(protocol.getAgvNo()).setMessageBody(agv_06_down));
         }
 
         // 鏂欎粨淇℃伅鍖�

--
Gitblit v1.9.1