From d093d9d2135352fd40bc333e01f67dbdd69f01fa Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期二, 01 四月 2025 14:30:45 +0800
Subject: [PATCH] #
---
zy-acs-manager/src/main/java/com/zy/acs/manager/fake/AgvSimulatorTask.java | 68 +++++++++++++++++++++++++++++----
1 files changed, 59 insertions(+), 9 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 0cb4de9..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();
@@ -104,7 +109,7 @@
private void simulateWalking(Agv agv, Action action) throws InterruptedException {
- Code code = codeService.selectByData(action.getCode());
+ Code code = codeService.getCacheByData(action.getCode());
// agvDetail.setPos(1);
// agvDetail.setCode(code.getId());
// 妯℃嫙鐢甸噺娑堣��
@@ -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