From d5c06a9e5bc44564cc1d31cb82ec29640c4f2cbb Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期二, 21 一月 2025 14:25:01 +0800
Subject: [PATCH] #

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/fake/AgvSimulatorTask.java |   47 ++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 42 insertions(+), 5 deletions(-)

diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/fake/AgvSimulatorTask.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/fake/AgvSimulatorTask.java
index 102a266..9a7a5b7 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/fake/AgvSimulatorTask.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/fake/AgvSimulatorTask.java
@@ -6,6 +6,7 @@
 import com.zy.acs.common.utils.RedisSupport;
 import com.zy.acs.manager.core.cache.CoreCache;
 import com.zy.acs.manager.core.domain.CodeStepDto;
+import com.zy.acs.manager.core.domain.type.JobType;
 import com.zy.acs.manager.core.scheduler.MapDataWsScheduler;
 import com.zy.acs.manager.core.service.MainService;
 import com.zy.acs.manager.core.service.MapService;
@@ -14,10 +15,7 @@
 import com.zy.acs.manager.manager.entity.Code;
 import com.zy.acs.manager.manager.enums.ActionStsType;
 import com.zy.acs.manager.manager.enums.ActionTypeType;
-import com.zy.acs.manager.manager.service.ActionService;
-import com.zy.acs.manager.manager.service.AgvDetailService;
-import com.zy.acs.manager.manager.service.CodeService;
-import com.zy.acs.manager.manager.service.JamService;
+import com.zy.acs.manager.manager.service.*;
 import lombok.extern.slf4j.Slf4j;
 
 import java.util.List;
@@ -31,6 +29,7 @@
 
     private final Agv agv;
     private final AgvDetailService agvDetailService;
+    private final AgvModelService agvModelService;
     private final ActionService actionService;
     private final CodeService codeService;
     private final MapService mapService;
@@ -46,6 +45,7 @@
             Agv agv
             , RedisSupport redis
             , AgvDetailService agvDetailService
+            , AgvModelService agvModelService
             , ActionService actionService
             , CodeService codeService
             , MapService mapService
@@ -56,6 +56,7 @@
         this.agv = agv;
         this.redis = redis;
         this.agvDetailService = agvDetailService;
+        this.agvModelService = agvModelService;
         this.actionService = actionService;
         this.codeService = codeService;
         this.mapService = mapService;
@@ -145,12 +146,48 @@
     }
 
     private void finishActionList(String qrCode) {
+        Long agvId = this.agv.getId();
+        String agvNo = this.agv.getUuid();
         // 1.show effect
-        CodeStepDto codeStepDto = CoreCache.AGV_MOCK_STEP_CACHE.get(this.agv.getId());
+        CodeStepDto codeStepDto = CoreCache.AGV_MOCK_STEP_CACHE.get(agvId);
         if (null != codeStepDto && qrCode.equals(codeStepDto.getCodeData())) {
 //            Code currentCode = agvDetailService.getCurrentCode(this.agv.getId());
             try { Thread.sleep(codeStepDto.getJobType().waitTime); } catch (InterruptedException ignore) {}
             CoreCache.AGV_MOCK_STEP_CACHE.remove(this.agv.getId());
+
+            JobType jobType = CoreCache.AGV_MOCK_JOB_CACHE.get(this.agv.getUuid());
+            switch (jobType) {
+                case LOC_PICK:
+                    Integer usedSlotsByLocPick = CoreCache.AGV_BACKPACK_USED_CACHE.get(agvId);
+                    usedSlotsByLocPick++;
+                    CoreCache.AGV_BACKPACK_USED_CACHE.put(agvId, usedSlotsByLocPick);
+
+                    if (Objects.equals(agvModelService.getByAgvId(agvId).getBackpack(), usedSlotsByLocPick)) {
+                        CoreCache.AGV_MOCK_JOB_CACHE.put(agvNo, JobType.CONVEYOR_DROP);
+                    }
+                    break;
+                case CONVEYOR_DROP:
+                    CoreCache.AGV_BACKPACK_USED_CACHE.put(agvId, 0);
+
+                    CoreCache.AGV_MOCK_JOB_CACHE.put(agvNo, JobType.CONVEYOR_PICK);
+                    break;
+                case CONVEYOR_PICK:
+                    CoreCache.AGV_BACKPACK_USED_CACHE.put(agvId, agvModelService.getByAgvId(agvId).getBackpack());
+
+                    CoreCache.AGV_MOCK_JOB_CACHE.put(agvNo, JobType.LOCK_DROP);
+                    break;
+                case LOCK_DROP:
+                    Integer usedSlotsByLocDrop = CoreCache.AGV_BACKPACK_USED_CACHE.get(agvId);
+                    usedSlotsByLocDrop--;
+                    CoreCache.AGV_BACKPACK_USED_CACHE.put(agvId, usedSlotsByLocDrop);
+
+                    if (usedSlotsByLocDrop == 0) {
+                        CoreCache.AGV_MOCK_JOB_CACHE.put(agvNo, JobType.LOC_PICK);
+                    }
+                    break;
+                default:
+                    break;
+            }
         }
 
         // 2.complete data

--
Gitblit v1.9.1