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