From 800418710e803ef898f7f364ba9d6293cc3a4967 Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期一, 20 一月 2025 16:19:36 +0800
Subject: [PATCH] #

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/domain/type/JobType.java                  |   21 ++++++++++
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java                  |    6 +-
 zy-acs-manager/src/main/java/com/zy/acs/manager/fake/AgvSimulatorTask.java                     |   14 +++++-
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/AgvDetailService.java          |    3 +
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/domain/CodeStepDto.java                   |   29 ++++++++++++++
 zy-acs-manager/src/main/java/com/zy/acs/manager/fake/FakeProcessor.java                        |    4 +
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/cache/CoreCache.java                      |    4 ++
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvDetailServiceImpl.java |   16 +++++++
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/PatrolService.java                |   17 ++++----
 9 files changed, 98 insertions(+), 16 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
index cfff1ae..7b420ff 100644
--- 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
@@ -1,5 +1,7 @@
 package com.zy.acs.manager.core.cache;
 
+import com.zy.acs.manager.core.domain.CodeStepDto;
+
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
@@ -7,4 +9,6 @@
 
     public static final Map<Long, Integer> AGV_BACKPACK_USED_CACHE = new ConcurrentHashMap<>();
 
+    public static final Map<Long, CodeStepDto> AGV_MOCK_STEP_CACHE = new ConcurrentHashMap<>();
+
 }
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/domain/CodeStepDto.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/domain/CodeStepDto.java
new file mode 100644
index 0000000..fa9727f
--- /dev/null
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/domain/CodeStepDto.java
@@ -0,0 +1,29 @@
+package com.zy.acs.manager.core.domain;
+
+import com.zy.acs.manager.core.domain.type.JobType;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class CodeStepDto implements Serializable {
+
+    private static final long serialVersionUID = 5750534229295043118L;
+
+    private String codeData;
+
+    private JobType jobType;
+
+    public CodeStepDto() {
+    }
+
+    public CodeStepDto(String codeData, JobType jobType) {
+        this.codeData = codeData;
+        this.jobType = jobType;
+    }
+
+    public static CodeStepDto build(String codeData, JobType jobType) {
+        return new CodeStepDto(codeData, jobType);
+    }
+
+}
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/domain/type/JobType.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/domain/type/JobType.java
new file mode 100644
index 0000000..8506d90
--- /dev/null
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/domain/type/JobType.java
@@ -0,0 +1,21 @@
+package com.zy.acs.manager.core.domain.type;
+
+@SuppressWarnings("all")
+public enum JobType {
+
+    CONVEYOR_PICK(3000),
+    CONVEYOR_DROP(3000),
+    LOC_PICK(1500),
+    LOCK_DROP(1500),
+    ;
+
+    public static void main(String[] args) {
+        System.out.println();
+    }
+
+    public long waitTime;
+
+    JobType(long waitTime) {
+        this.waitTime = waitTime;
+    }
+}
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 8b08e91..cbe8b0c 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
@@ -1050,9 +1050,9 @@
                 action.setStartTime(now);
                 action.setIoTime(now);
                 action.setUpdateTime(now);
-                if (!actionService.updateById(action)) {
-                    throw new BusinessException(action.getPriority() + " - " + action.getName() + "鍔ㄤ綔鏇存柊澶辫触");
-                }
+            }
+            if (!actionService.updateBatchById(actionList)) {
+                throw new BusinessException("failed to update action batch !!!");
             }
 
             // task
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/PatrolService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/PatrolService.java
index cf52343..9dd818d 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/PatrolService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/PatrolService.java
@@ -5,7 +5,12 @@
 import com.zy.acs.framework.common.Cools;
 import com.zy.acs.framework.common.R;
 import com.zy.acs.manager.core.cache.CoreCache;
-import com.zy.acs.manager.manager.entity.*;
+import com.zy.acs.manager.core.domain.CodeStepDto;
+import com.zy.acs.manager.core.domain.type.JobType;
+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.entity.Travel;
 import com.zy.acs.manager.manager.enums.StatusType;
 import com.zy.acs.manager.manager.enums.TaskTypeType;
 import com.zy.acs.manager.manager.enums.TravelStateType;
@@ -49,13 +54,6 @@
     }};
 
     private Map<String, JobType> agvJobMap = new ConcurrentHashMap<>();
-    public enum JobType {
-        CONVEYOR_PICK,
-        CONVEYOR_DROP,
-        LOC_PICK,
-        LOCK_DROP,
-        ;
-    }
 
     @Autowired
     private AgvService agvService;
@@ -130,6 +128,8 @@
 
         if (mainLockWrapService.buildMinorTask(agvId, TaskTypeType.MOVE, destinationCodeData, null)) {
             log.info( "{}寮�濮嬩綔涓氭紨绀�...", agvNo);
+
+            CoreCache.AGV_MOCK_STEP_CACHE.put(agvId, CodeStepDto.build(destinationCodeData, jobType));
             switch (jobType) {
                 case LOC_PICK:
                     Integer usedSlotsByLocPick = CoreCache.AGV_BACKPACK_USED_CACHE.get(agvId);
@@ -319,6 +319,7 @@
         if (cancelled) {
             AGV_PATROL_MAP.remove(agvNo);
             CoreCache.AGV_BACKPACK_USED_CACHE.remove(agvId);
+            CoreCache.AGV_MOCK_STEP_CACHE.remove(agvId);
             this.agvJobMap.remove(agvNo);
             log.info("宸插仠姝GV " + agvNo + " 鐨勮窇搴撲换鍔°��");
             return R.ok("宸插仠姝GV " + agvNo + " 鐨勮窇搴撲换鍔°��");
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 874926c..102a266 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,16 +1,16 @@
 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.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;
@@ -145,7 +145,15 @@
     }
 
     private void finishActionList(String qrCode) {
-        // 1.complete data
+        // 1.show effect
+        CodeStepDto codeStepDto = CoreCache.AGV_MOCK_STEP_CACHE.get(this.agv.getId());
+        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());
+        }
+
+        // 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());
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/fake/FakeProcessor.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/fake/FakeProcessor.java
index 63599dd..534778a 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/fake/FakeProcessor.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/fake/FakeProcessor.java
@@ -126,9 +126,9 @@
                         for (Agv agv : agvList) {
 
                             if (!AGV_PROCESSING_MAP.get(agv.getId())) {
+                                AGV_PROCESSING_MAP.put(agv.getId(), true);
                                 List<Action> actionList = actionService.queryLatestGroup(agv.getId(), ActionStsType.ISSUED);
                                 if (!Cools.isEmpty(actionList)) {
-                                    AGV_PROCESSING_MAP.put(agv.getId(), true);
                                     executorService.submit(new AgvSimulatorTask(
                                             agv
                                             , redis
@@ -140,6 +140,8 @@
                                             , mainService
                                             , actionList
                                     ));
+                                } else {
+                                    AGV_PROCESSING_MAP.put(agv.getId(), false);
                                 }
                             }
 
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/AgvDetailService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/AgvDetailService.java
index 1a6ac7c..2794695 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/AgvDetailService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/AgvDetailService.java
@@ -4,6 +4,7 @@
 import com.zy.acs.manager.manager.entity.Agv;
 import com.zy.acs.manager.manager.entity.AgvDetail;
 import com.zy.acs.manager.manager.entity.AgvModel;
+import com.zy.acs.manager.manager.entity.Code;
 
 public interface AgvDetailService extends IService<AgvDetail> {
 
@@ -25,4 +26,6 @@
 
     Boolean isPowerLoss(Agv agv, AgvDetail agvDetail, AgvModel agvModel);
 
+    Code getCurrentCode(Long agvId);
+
 }
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvDetailServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvDetailServiceImpl.java
index fbb348a..dce8c0c 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvDetailServiceImpl.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvDetailServiceImpl.java
@@ -5,10 +5,12 @@
 import com.zy.acs.manager.manager.entity.Agv;
 import com.zy.acs.manager.manager.entity.AgvDetail;
 import com.zy.acs.manager.manager.entity.AgvModel;
+import com.zy.acs.manager.manager.entity.Code;
 import com.zy.acs.manager.manager.mapper.AgvDetailMapper;
 import com.zy.acs.manager.manager.service.AgvDetailService;
 import com.zy.acs.manager.manager.service.AgvModelService;
 import com.zy.acs.manager.manager.service.AgvService;
+import com.zy.acs.manager.manager.service.CodeService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -19,6 +21,8 @@
     private AgvService agvService;
     @Autowired
     private AgvModelService agvModelService;
+    @Autowired
+    private CodeService codeService;
 
     @Override
     public AgvDetail selectMajorByAgvId(Long agvId) {
@@ -63,7 +67,7 @@
     @Override
     public Boolean isPowerLoss(Agv agv, AgvDetail agvDetail, AgvModel agvModel) {
         if (null == agvDetail) {
-            agvDetail = this.selectByAgvId(agv.getId());
+            agvDetail = this.selectMajorByAgvId(agv.getId());
         }
         if (null == agvModel) {
             agvModel = agvModelService.getByAgvId(agv.getId());
@@ -75,4 +79,14 @@
         }
     }
 
+    @Override
+    public Code getCurrentCode(Long agvId) {
+        AgvDetail agvDetail = this.selectMajorByAgvId(agvId);
+        Long recentCode = agvDetail.getRecentCode();
+        if (null == recentCode) {
+            return null;
+        }
+        return codeService.getById(recentCode);
+    }
+
 }

--
Gitblit v1.9.1