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