From ee5046d151a858339aa137790bc830efe7f55980 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期三, 18 六月 2025 15:13:14 +0800
Subject: [PATCH] 1

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/fake/AgvSimulatorTask.java |   66 +++++++++++++++++++++++++++++----
 1 files changed, 58 insertions(+), 8 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 5d8013b..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
@@ -1,22 +1,21 @@
 package com.zy.acs.manager.fake;
 
-import com.zy.acs.common.constant.RedisConstant;
 import com.zy.acs.common.domain.AgvProtocol;
 import com.zy.acs.common.domain.protocol.AGV_11_UP;
 import com.zy.acs.common.enums.AgvCompleteType;
 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;
 import com.zy.acs.manager.manager.entity.Action;
 import com.zy.acs.manager.manager.entity.Agv;
-import com.zy.acs.manager.manager.entity.AgvDetail;
 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;
@@ -30,10 +29,12 @@
 
     private final Agv agv;
     private final AgvDetailService agvDetailService;
+    private final AgvModelService agvModelService;
     private final ActionService actionService;
     private final CodeService codeService;
     private final MapService mapService;
     private final JamService jamService;
+    private final MainService mainService;
     private final List<Action> actionList;
 
     private final RedisSupport redis;
@@ -44,19 +45,23 @@
             Agv agv
             , RedisSupport redis
             , AgvDetailService agvDetailService
+            , AgvModelService agvModelService
             , ActionService actionService
             , CodeService codeService
             , MapService mapService
             , JamService jamService
+            , MainService mainService
             , List<Action> actionList
     ) {
         this.agv = agv;
         this.redis = redis;
         this.agvDetailService = agvDetailService;
+        this.agvModelService = agvModelService;
         this.actionService = actionService;
         this.codeService = codeService;
         this.mapService = mapService;
         this.jamService = jamService;
+        this.mainService = mainService;
         this.actionList = actionList;
 
         this.groupId = actionList.get(0).getGroupId();
@@ -141,7 +146,51 @@
     }
 
     private void finishActionList(String qrCode) {
-        // 1.complete data
+        Long agvId = this.agv.getId();
+        String agvNo = this.agv.getUuid();
+        // 1.show effect
+        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
         AGV_11_UP agv_11_up = new AGV_11_UP();
         agv_11_up.setSerialNo(groupId);
         agv_11_up.setCompleteCode(AgvCompleteType.ENTIRE_PATH_COMPLETE.getCode());
@@ -149,6 +198,7 @@
         agv_11_up.setQrCode(qrCode);
 
         AgvProtocol agvProtocol = AgvProtocol.build(this.agv.getUuid()).setMessageBody(agv_11_up);
-        redis.push(RedisConstant.AGV_COMPLETE_FLAG, agvProtocol);
+        mainService.upDataSubscribe(agvProtocol);
+//        redis.push(RedisConstant.AGV_COMPLETE_FLAG, agvProtocol);
     }
 }

--
Gitblit v1.9.1