From 780b249bc5089d29f71e1e3f677bec38e7f8e8c9 Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期一, 20 一月 2025 10:56:14 +0800
Subject: [PATCH] #

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/cache/CoreCache.java                |   10 ++++++++++
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/AgvService.java          |    2 ++
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java |   13 +++++++++++++
 3 files changed, 25 insertions(+), 0 deletions(-)

diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/cache/CoreCache.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/cache/CoreCache.java
new file mode 100644
index 0000000..ed1a31b
--- /dev/null
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/cache/CoreCache.java
@@ -0,0 +1,10 @@
+package com.zy.acs.manager.core.cache;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+public class CoreCache {
+
+    public static final Map<Long, Integer> AGV_BACKPACK_CACHE = new ConcurrentHashMap<>();
+
+}
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/AgvService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/AgvService.java
index 521c282..989a4e0 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/AgvService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/AgvService.java
@@ -38,4 +38,6 @@
 
     Agv findByPosition(Long codeId);
 
+    int getBackpackRemainingCapacity(Long agvId);
+
 }
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java
index b9d13d7..ef2bd79 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java
@@ -9,6 +9,7 @@
 import com.zy.acs.manager.common.domain.BaseParam;
 import com.zy.acs.manager.common.domain.PageParam;
 import com.zy.acs.manager.common.domain.PageResult;
+import com.zy.acs.manager.core.cache.CoreCache;
 import com.zy.acs.manager.core.domain.VehicleDto;
 import com.zy.acs.manager.manager.controller.result.AgvResult;
 import com.zy.acs.manager.manager.entity.Agv;
@@ -207,4 +208,16 @@
         return null;
     }
 
+    @Override
+    public int getBackpackRemainingCapacity(Long agvId) {
+        int usedSlots = 0;
+        Integer backpackCache = CoreCache.AGV_BACKPACK_CACHE.get(agvId);
+        if (null != backpackCache) {
+            usedSlots = taskService.findTransportTasksCountByAgv(agvId);
+        }
+
+        AgvModel agvModel = agvModelService.getByAgvId(agvId);
+        return Math.max(agvModel.getBackpack() - usedSlots, 0); // if less than zero, then return zero
+    }
+
 }

--
Gitblit v1.9.1