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

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/domain/TaskPosDto.java                  |   12 ++++++++++++
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java                |   36 ++++++++++++++++++++++++++++++------
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/SegmentServiceImpl.java |    1 +
 3 files changed, 43 insertions(+), 6 deletions(-)

diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/domain/TaskPosDto.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/domain/TaskPosDto.java
index 2b43c73..9bccc07 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/domain/TaskPosDto.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/domain/TaskPosDto.java
@@ -47,6 +47,18 @@
             this.brief = brief;
         }
 
+        public static PosType of(String posTypeStr) {
+            if (Cools.isEmpty(posTypeStr)) {
+                return null;
+            }
+            for (PosType type : PosType.values()) {
+                if (type.toString().equals(posTypeStr)) {
+                    return type;
+                }
+            }
+            throw new IllegalArgumentException(posTypeStr);
+        }
+
     }
 
     public static void packagePosGroup(Map<String, List<TaskPosDto>> groups, Task task, Code code, PosType posType, String sameGroupXy) {
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 790ab43..7cb0de0 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
@@ -1469,16 +1469,40 @@
 
             // 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 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;
+                }
 
-            // todo:vincent 鏍¢獙鏄惁鍙互鍙栨斁璐�
+                if (responseAck) {
 
-            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);
+                    // todo:vincent 鏍¢獙鏄惁鍙互鍙栨斁璐�
 
-            redis.push(RedisConstant.AGV_PATH_DOWN_FLAG, AgvProtocol.build(protocol.getAgvNo()).setMessageBody(agv_06_down));
+                    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));
+                }
+
+            }
         }
 
         // 鏂欎粨淇℃伅鍖�
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/SegmentServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/SegmentServiceImpl.java
index c3eaf34..63a4681 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/SegmentServiceImpl.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/SegmentServiceImpl.java
@@ -156,6 +156,7 @@
                 .eq(Segment::getAgvId, agvId)
                 .eq(Segment::getState, SegmentStateType.RUNNING.toString())
                 .eq(Segment::getEndNode, codeId)
+                .orderByDesc(Segment::getId)
         );
 
         if (Cools.isEmpty(segments)) {

--
Gitblit v1.9.1