From 43412c20ac444392471ea8ea8bc4a93af39efe87 Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期一, 19 一月 2026 13:17:27 +0800
Subject: [PATCH] #

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Loc.java             |   70 +++++++++--------------
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Sta.java             |   18 +++--
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/HandlerController.java         |   37 ++++++++++++
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AgvAreaDispatcher.java |   23 ++++++-
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AllocateService.java   |    4 
 5 files changed, 95 insertions(+), 57 deletions(-)

diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/HandlerController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/HandlerController.java
index 0814a51..4cedd28 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/HandlerController.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/HandlerController.java
@@ -75,6 +75,8 @@
     private PatrolService patrolService;
     @Autowired
     private StaReserveService staReserveService;
+    @Autowired
+    private AgvAreaDispatcher agvAreaDispatcher;
 
     @PreAuthorize("hasAuthority('manager:agv:update')")
     @OperationLog("Locate All Agv")
@@ -193,6 +195,9 @@
                 if (null == endCode) {
                     return R.error();
                 }
+                if (!agvAreaDispatcher.match(agv.getId(), endCode.getId())) {
+                    throw new BusinessException("AGV " + agv.getUuid() + " failed to reach target code " + endCode.getData());
+                }
                 if (!taskService.removeById(task.getId())) {
                     throw new BusinessException("failed to remove task");
                 }
@@ -222,6 +227,10 @@
                 if (null == oriLoc) {
                     return R.error();
                 }
+                if (!agvAreaDispatcher.match(agv.getId(), oriLoc.getCode())) {
+//                    throw new BusinessException("AGV " + agv.getUuid() + " failed to reach target code " + oriLoc.getCode$());
+                    throw new BusinessException("AGV銆�" + agv.getUuid() + "銆戞棤娉曞埌杈捐捣濮嬪簱浣嶃��" + oriLoc.getLocNo() + "銆�");
+                }
                 if (!oriLoc.getLocSts().equals(LocStsType.STOCK.val())) {
                     throw new BusinessException("oriLoc锛�" + oriLoc.getLocNo() + " 涓嶆槸鍦ㄥ簱鐘舵��");
                 }
@@ -240,6 +249,10 @@
                 }
                 if (null == destLoc) {
                     return R.error();
+                }
+                if (!agvAreaDispatcher.match(agv.getId(), destLoc.getCode())) {
+//                    throw new BusinessException("AGV " + agv.getUuid() + " failed to reach target code " + destLoc.getCode$());
+                    throw new BusinessException("AGV銆�" + agv.getUuid() + "銆戞棤娉曞埌杈剧洰鏍囧簱浣嶃��" + destLoc.getLocNo() + "銆�");
                 }
                 if (!destLoc.getLocSts().equals(LocStsType.IDLE.val())) {
                     throw new BusinessException("destLoc锛�" + destLoc.getLocNo() + " 涓嶆槸绌洪棽鐘舵��");
@@ -267,6 +280,10 @@
                 if (null == oriLoc) {
                     return R.error();
                 }
+                if (!agvAreaDispatcher.match(agv.getId(), oriLoc.getCode())) {
+//                    throw new BusinessException("AGV " + agv.getUuid() + " failed to reach target code " + oriLoc.getCode$());
+                    throw new BusinessException("AGV銆�" + agv.getUuid() + "銆戞棤娉曞埌杈捐捣濮嬪簱浣嶃��" + oriLoc.getLocNo() + "銆�");
+                }
                 if (!oriLoc.getLocSts().equals(LocStsType.STOCK.val())) {
                     throw new BusinessException("oriLoc锛�" + oriLoc.getLocNo() + " 涓嶆槸鍦ㄥ簱鐘舵��");
                 }
@@ -285,6 +302,10 @@
                 }
                 if (null == destSta) {
                     return R.error();
+                }
+                if (!agvAreaDispatcher.match(agv.getId(), destSta.getCode())) {
+//                    throw new BusinessException("AGV " + agv.getUuid() + " failed to reach target code " + destSta.getCode$());
+                    throw new BusinessException("AGV銆�" + agv.getUuid() + "銆戞棤娉曞埌杈剧洰鏍囩珯鐐广��" + destSta.getStaNo() + "銆�");
                 }
                 if (null == staReserveService.reserveStaIn(destSta, task, 1)) {
                     throw new BusinessException("destSta锛�" + destSta.getStaNo() + " 棰勭害澶辫触");
@@ -308,6 +329,10 @@
                 if (null == oriSta) {
                     return R.error();
                 }
+                if (!agvAreaDispatcher.match(agv.getId(), oriSta.getCode())) {
+//                    throw new BusinessException("AGV " + agv.getUuid() + " failed to reach target code " + oriSta.getCode$());
+                    throw new BusinessException("AGV銆�" + agv.getUuid() + "銆戞棤娉曞埌杈捐捣濮嬬珯鐐广��" + oriSta.getStaNo() + "銆�");
+                }
                 if (null == staReserveService.reserveStaOut(oriSta, task, 1)) {
                     throw new BusinessException("oriSta锛�" + oriSta.getStaNo() + " 棰勭害澶辫触");
                 }
@@ -321,6 +346,10 @@
                 }
                 if (null == destLoc) {
                     return R.error();
+                }
+                if (!agvAreaDispatcher.match(agv.getId(), destLoc.getCode())) {
+//                    throw new BusinessException("AGV " + agv.getUuid() + " failed to reach target code " + destLoc.getCode$());
+                    throw new BusinessException("AGV銆�" + agv.getUuid() + "銆戞棤娉曞埌杈剧洰鏍囧簱浣嶃��" + destLoc.getLocNo() + "銆�");
                 }
                 if (!destLoc.getLocSts().equals(LocStsType.IDLE.val())) {
                     throw new BusinessException("destLoc锛�" + destLoc.getLocNo() + " 涓嶆槸绌洪棽鐘舵��");
@@ -350,6 +379,10 @@
                 if (null == oriSta) {
                     return R.error();
                 }
+                if (!agvAreaDispatcher.match(agv.getId(), oriSta.getCode())) {
+//                    throw new BusinessException("AGV " + agv.getUuid() + " failed to reach target code " + oriSta.getCode$());
+                    throw new BusinessException("AGV銆�" + agv.getUuid() + "銆戞棤娉曞埌杈捐捣濮嬬珯鐐广��" + oriSta.getStaNo() + "銆�");
+                }
                 if (null == staReserveService.reserveStaOut(oriSta, task, 1)) {
                     throw new BusinessException("oriSta锛�" + oriSta.getStaNo() + " 棰勭害澶辫触");
                 }
@@ -365,6 +398,10 @@
                 if (null == destSta) {
                     return R.error();
                 }
+                if (!agvAreaDispatcher.match(agv.getId(), destSta.getCode())) {
+//                    throw new BusinessException("AGV " + agv.getUuid() + " failed to reach target code " + destSta.getCode$());
+                    throw new BusinessException("AGV銆�" + agv.getUuid() + "銆戞棤娉曞埌杈剧洰鏍囩珯鐐广��" + destSta.getStaNo() + "銆�");
+                }
                 if (null == staReserveService.reserveStaIn(destSta, task, 1)) {
                     throw new BusinessException("destSta锛�" + destSta.getStaNo() + " 棰勭害澶辫触");
                 }
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AgvAreaDispatcher.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AgvAreaDispatcher.java
index 605293b..22a9888 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AgvAreaDispatcher.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AgvAreaDispatcher.java
@@ -36,7 +36,7 @@
     public void init() {
     }
 
-    public List<Long> getAgvNosByTask(Task task) {
+    public List<Long> getAgvIdsByTask(Task task) {
         if (null == task) {
             return null;
         }
@@ -67,11 +67,11 @@
         return null;
     }
 
-    public List<Long> getAgvIdsByCode(String code) {
-        if (Cools.isEmpty(code)) {
+    public List<Long> getAgvIdsByCode(String codeData) {
+        if (Cools.isEmpty(codeData)) {
             return new ArrayList<>();
         }
-        List<Long> areaIds = areaGovernService.queryAreas(code);
+        List<Long> areaIds = areaGovernService.queryAreas(codeData);
         List<Long> agvIds = areaAgvService.queryAgvIdsByAreaIds(areaIds);
         agvIds.addAll(areaAgvService.findAgvIdsWithoutAreaAgv());
         return agvIds;
@@ -81,6 +81,21 @@
         return null;
     }
 
+    public Boolean match(Long agvId, Long codeId) {
+        Code code = codeService.getCacheById(codeId);
+        if (Cools.isEmpty(agvId, code)) {
+            return false;
+        }
+        List<Long> agvIds = this.getAgvIdsByCode(code.getData());
+        if (Cools.isEmpty(agvIds)) {
+            return false;
+        }
+        if (!agvIds.contains(agvId)) {
+            return false;
+        }
+        return true;
+    }
+
     // 濡傛灉閮芥病鏈夊懡涓紝灏辫繑鍥炲叏閮╟ode
     public List<String> getCodesByAgvId(Long agvId) {
         List<Long> areaIds = areaAgvService.queryAreaIdsByAgvId(agvId);
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AllocateService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AllocateService.java
index 2918e16..0dc1f6f 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AllocateService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AllocateService.java
@@ -121,7 +121,7 @@
             return null;
         }
 
-        List<String> availableAgvNos = this.getAvailableAgvNos(agvAreaDispatcher.getAgvNosByTask(task), true);
+        List<String> availableAgvNos = this.getAvailableAgvNos(agvAreaDispatcher.getAgvIdsByTask(task), true);
         FilterLaneDto filterLaneDto = this.filterThroughLane(task, availableAgvNos);
         if (filterLaneDto == null) {
             return null;
@@ -155,7 +155,7 @@
      *      it can break the limit of the number of agv backpack
      */
     public synchronized String normalExecute(Task task) {
-        List<String> availableAgvNos = this.getAvailableAgvNos(agvAreaDispatcher.getAgvNosByTask(task), false);
+        List<String> availableAgvNos = this.getAvailableAgvNos(agvAreaDispatcher.getAgvIdsByTask(task), false);
 //        List<String> availableAgvNos = this.getAvailableAgvNos(null);
         if (Cools.isEmpty(availableAgvNos)) {
 //            log.warn("No available agv to assign the task[{}]", task.getSeqNum());
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Loc.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Loc.java
index 478733c..d34dc3b 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Loc.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Loc.java
@@ -7,8 +7,6 @@
 import com.zy.acs.framework.common.SpringUtils;
 import com.zy.acs.manager.manager.service.CodeService;
 import com.zy.acs.manager.manager.service.LocStsService;
-import com.zy.acs.manager.manager.service.LocTypeService;
-import com.zy.acs.manager.manager.service.ZoneService;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -208,32 +206,32 @@
 //            null    // 澶囨敞
 //    );
 
-    public String getZoneId$(){
-        ZoneService service = SpringUtils.getBean(ZoneService.class);
-        Zone zone = service.getById(this.zoneId);
-        if (!Cools.isEmpty(zone)){
-            return String.valueOf(zone.getName());
-        }
-        return null;
-    }
+//    public String getZoneId$(){
+//        ZoneService service = SpringUtils.getBean(ZoneService.class);
+//        Zone zone = service.getById(this.zoneId);
+//        if (!Cools.isEmpty(zone)){
+//            return String.valueOf(zone.getName());
+//        }
+//        return null;
+//    }
 
     public String getCode$(){
         CodeService service = SpringUtils.getBean(CodeService.class);
-        Code code = service.getById(this.code);
+        Code code = service.getCacheById(this.code);
         if (!Cools.isEmpty(code)){
             return String.valueOf(code.getData());
         }
         return null;
     }
 
-    public String getLocSts$(){
-        LocStsService service = SpringUtils.getBean(LocStsService.class);
-        LocSts locSts = service.getById(this.locSts);
-        if (!Cools.isEmpty(locSts)){
-            return String.valueOf(locSts.getName());
-        }
-        return null;
-    }
+//    public String getLocSts$(){
+//        LocStsService service = SpringUtils.getBean(LocStsService.class);
+//        LocSts locSts = service.getById(this.locSts);
+//        if (!Cools.isEmpty(locSts)){
+//            return String.valueOf(locSts.getName());
+//        }
+//        return null;
+//    }
 
     public String getLocStsEl(){
         LocStsService service = SpringUtils.getBean(LocStsService.class);
@@ -244,36 +242,22 @@
         return null;
     }
 
-    public String getLocType$(){
-        LocTypeService service = SpringUtils.getBean(LocTypeService.class);
-        LocType locType = service.getById(this.locType);
-        if (!Cools.isEmpty(locType)){
-            return String.valueOf(locType.getName());
-        }
-        return null;
-    }
-
-    public String getStatus$(){
-        if (null == this.status){ return null; }
-        switch (this.status){
-            case 1:
-                return "姝e父";
-            case 0:
-                return "鍐荤粨";
-            default:
-                return String.valueOf(this.status);
-        }
-    }
-
-
+//    public String getLocType$(){
+//        LocTypeService service = SpringUtils.getBean(LocTypeService.class);
+//        LocType locType = service.getById(this.locType);
+//        if (!Cools.isEmpty(locType)){
+//            return String.valueOf(locType.getName());
+//        }
+//        return null;
+//    }
 
     public String getCompDirect$(){
         if (null == this.compDirect){ return null; }
         switch (this.compDirect){
             case 1:
-                return "澶т簬";
+                return "RIGHT";
             case 0:
-                return "灏忎簬";
+                return "LEFT";
             default:
                 return String.valueOf(this.deleted);
         }
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Sta.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Sta.java
index 8347a1f..ff9e23a 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Sta.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Sta.java
@@ -4,6 +4,8 @@
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.zy.acs.framework.common.Cools;
+import com.zy.acs.framework.common.SpringUtils;
+import com.zy.acs.manager.manager.service.CodeService;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -116,14 +118,14 @@
 //        return null;
 //    }
 //
-//    public String getCode$(){
-//        CodeService service = SpringUtils.getBean(CodeService.class);
-//        Code code = service.getById(this.code);
-//        if (!Cools.isEmpty(code)){
-//            return String.valueOf(code.getUuid());
-//        }
-//        return null;
-//    }
+    public String getCode$(){
+        CodeService service = SpringUtils.getBean(CodeService.class);
+        Code code = service.getCacheById(this.code);
+        if (!Cools.isEmpty(code)){
+            return String.valueOf(code.getData());
+        }
+        return null;
+    }
 //
 //    public String getStaSts$(){
 //        StaStsService service = SpringUtils.getBean(StaStsService.class);

--
Gitblit v1.9.1