From 02b49844456ea3e650edcf03d8d6a5bad6ba9aed Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期三, 08 一月 2025 14:15:05 +0800 Subject: [PATCH] # --- zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/MapDataDispatcher.java | 41 -------------------- zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/RetreatNavigateService.java | 9 +--- zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java | 4 +- zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/MapDataWsScheduler.java | 6 +- zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java | 41 ++++++++++++++++++++ 5 files changed, 48 insertions(+), 53 deletions(-) diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/MapDataWsScheduler.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/MapDataWsScheduler.java index 5b5f82b..9d502e1 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/MapDataWsScheduler.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/MapDataWsScheduler.java @@ -5,7 +5,7 @@ import com.zy.acs.manager.core.domain.BackpackDto; import com.zy.acs.manager.core.domain.MapWsAgvVo; import com.zy.acs.manager.core.domain.MapWsVo; -import com.zy.acs.manager.core.service.astart.MapDataDispatcher; +import com.zy.acs.manager.core.service.MapService; import com.zy.acs.manager.manager.entity.Agv; import com.zy.acs.manager.manager.entity.AgvDetail; import com.zy.acs.manager.manager.entity.AgvModel; @@ -46,7 +46,7 @@ @Autowired private CodeService codeService; @Autowired - private MapDataDispatcher mapDataDispatcher; + private MapService mapService; @PostConstruct public void init() { @@ -90,7 +90,7 @@ vo.setBattery(agvDetail.getSoc()); vo.setError(agvDetail.realError()); - vo.setDynamicRoute(mapDataDispatcher.queryCodeListFromDynamicNode(null, agv.getUuid())); + vo.setDynamicRoute(mapService.queryCodeListFromDynamicNode(null, agv.getUuid())); agvVos.add(vo); } diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java index 976c8e0..cb34cda 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java @@ -5,9 +5,11 @@ import com.zy.acs.framework.common.Cools; import com.zy.acs.manager.common.utils.MapDataUtils; import com.zy.acs.manager.core.constant.MapDataConstant; +import com.zy.acs.manager.core.domain.SortCodeDto; import com.zy.acs.manager.core.domain.UnlockPathTask; import com.zy.acs.manager.core.service.astart.*; import com.zy.acs.manager.core.service.astart.domain.AStarNavigateNode; +import com.zy.acs.manager.core.service.astart.domain.DynamicNode; import com.zy.acs.manager.core.service.floyd.FloydNavigateService; import com.zy.acs.manager.manager.entity.Code; import com.zy.acs.manager.manager.entity.Loc; @@ -21,9 +23,11 @@ import org.springframework.stereotype.Component; import java.util.*; +import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; +import java.util.stream.IntStream; /** * Created by vincent on 2023/6/14 @@ -364,4 +368,41 @@ return turnMatrixNode == TurnNodeType.TURN.val; } + public List<String> queryCodeListFromDynamicNode(Integer lev, String nodeType) { + if (Cools.isEmpty(nodeType)) { + return new ArrayList<>(); + } + lev = Optional.ofNullable(lev).orElse(MapDataDispatcher.MAP_DEFAULT_LEV); + + DynamicNode[][] dynamicMatrix = mapDataDispatcher.getDynamicMatrix(lev); + String[][] codeMatrix = mapDataDispatcher.getCodeMatrix(lev); + + // concurrent + ConcurrentLinkedQueue<SortCodeDto> codeList = new ConcurrentLinkedQueue<>(); + IntStream.range(0, codeMatrix.length).parallel().forEach(i -> { + for (int j = 0; j < codeMatrix[i].length; j++) { + DynamicNode dynamicNode = dynamicMatrix[i][j]; + if (nodeType.equals(dynamicNode.getVehicle())) { + codeList.add(new SortCodeDto(codeMatrix[i][j], dynamicNode.getSerial())); + } + } + }); + + // synchronize +// List<SortCodeDto> codeList = new ArrayList<>(); +// for (int i = 0; i < codeMatrix.length; i++) { +// for (int j = 0; j < codeMatrix[i].length; j++) { +// DynamicNode dynamicNode = dynamicMatrix[i][j]; +// if (nodeType.equals(dynamicNode.getVehicle())) { +// codeList.add(new SortCodeDto(codeMatrix[i][j], dynamicNode.getSerial())); +// } +// } +// } + + return codeList.stream() + .sorted(Comparator.comparingInt(SortCodeDto::getSerial)) + .map(SortCodeDto::getCode) + .collect(Collectors.toList()); + } + } diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/RetreatNavigateService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/RetreatNavigateService.java index 7e9cbc3..1b6d1d4 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/RetreatNavigateService.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/RetreatNavigateService.java @@ -1,19 +1,16 @@ package com.zy.acs.manager.core.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.zy.acs.common.constant.RedisConstant; import com.zy.acs.common.utils.RedisSupport; import com.zy.acs.common.utils.Utils; import com.zy.acs.framework.common.Cools; import com.zy.acs.manager.common.utils.MapDataUtils; import com.zy.acs.manager.core.constant.MapDataConstant; -import com.zy.acs.manager.core.domain.Lane; import com.zy.acs.manager.core.service.astart.*; import com.zy.acs.manager.core.service.astart.domain.DynamicNode; import com.zy.acs.manager.core.utils.RouteGenerator; import com.zy.acs.manager.manager.entity.Code; import com.zy.acs.manager.manager.entity.Jam; -import com.zy.acs.manager.manager.entity.Route; import com.zy.acs.manager.manager.entity.Segment; import com.zy.acs.manager.manager.enums.JamStateType; import com.zy.acs.manager.manager.service.*; @@ -39,8 +36,6 @@ @Autowired private CodeService codeService; - @Autowired - private RouteService routeService; @Autowired private MapDataDispatcher mapDataDispatcher; @Autowired @@ -113,7 +108,7 @@ if (!Cools.isEmpty(blackList) && blackList.contains(otherWave)) { continue label; } - if (1 < mapDataDispatcher.queryCodeListFromDynamicNode(lev, otherWave).size()) { + if (1 < mapService.queryCodeListFromDynamicNode(lev, otherWave).size()) { phaseSecond = false; // there is a running way continue label; } else { @@ -269,7 +264,7 @@ if (!Cools.isEmpty(blackList) && blackList.contains(otherWave)) { continue; } - if (1 < mapDataDispatcher.queryCodeListFromDynamicNode(lev, otherWave).size()) { + if (1 < mapService.queryCodeListFromDynamicNode(lev, otherWave).size()) { if (null != availablePointOfTurn && actualLanesOfTurn > 0) { actualLanesOfTurn --; diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java index 86e42f5..31fa21a 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java @@ -441,7 +441,7 @@ List<String> otherWaveList = MapDataUtils.hasOtherWave(waveNodeList, agvNo); if (!Cools.isEmpty(otherWaveList)) { for (String otherWave : otherWaveList) { - if (1 < mapDataDispatcher.queryCodeListFromDynamicNode(lev, otherWave).size()) { + if (1 < mapService.queryCodeListFromDynamicNode(lev, otherWave).size()) { blockVehicleList.add(new BlockVehicleDto(otherWave, false)); } else { blockVehicleList.add(new BlockVehicleDto(otherWave, true)); @@ -585,7 +585,7 @@ List<String> list = GsonUtils.fromJsonToList(jam.getJamPath(), String.class); Agv jamAgv = agvService.getById(jam.getJamAgv()); - List<String> jamDynamicNodes = mapDataDispatcher.queryCodeListFromDynamicNode(lev, jamAgv.getUuid()); + List<String> jamDynamicNodes = mapService.queryCodeListFromDynamicNode(lev, jamAgv.getUuid()); // jamDynamicNodes has sorted String firstCodeNode = jamDynamicNodes.stream().findFirst().orElse(null); diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/MapDataDispatcher.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/MapDataDispatcher.java index 7d90822..f8a319b 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/MapDataDispatcher.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/MapDataDispatcher.java @@ -6,7 +6,6 @@ import com.zy.acs.common.utils.RedisSupport; import com.zy.acs.framework.common.Cools; import com.zy.acs.framework.exception.CoolException; -import com.zy.acs.manager.core.domain.SortCodeDto; import com.zy.acs.manager.core.service.astart.domain.DynamicNode; import com.zy.acs.manager.core.utils.RouteGenerator; import com.zy.acs.manager.manager.entity.Code; @@ -17,9 +16,6 @@ import lombok.extern.slf4j.Slf4j; import java.util.*; -import java.util.concurrent.ConcurrentLinkedQueue; -import java.util.stream.Collectors; -import java.util.stream.IntStream; /** * Created by vincent on 6/6/2024 @@ -481,43 +477,6 @@ } } return codeMatrixIdxList; - } - - public List<String> queryCodeListFromDynamicNode(Integer lev, String nodeType) { - if (Cools.isEmpty(nodeType)) { - return new ArrayList<>(); - } - lev = Optional.ofNullable(lev).orElse(MAP_DEFAULT_LEV); - - DynamicNode[][] dynamicMatrix = getDynamicMatrix(lev); - String[][] codeMatrix = this.getCodeMatrix(lev); - - // concurrent - ConcurrentLinkedQueue<SortCodeDto> codeList = new ConcurrentLinkedQueue<>(); - IntStream.range(0, codeMatrix.length).parallel().forEach(i -> { - for (int j = 0; j < codeMatrix[i].length; j++) { - DynamicNode dynamicNode = dynamicMatrix[i][j]; - if (nodeType.equals(dynamicNode.getVehicle())) { - codeList.add(new SortCodeDto(codeMatrix[i][j], dynamicNode.getSerial())); - } - } - }); - - // synchronize -// List<SortCodeDto> codeList = new ArrayList<>(); -// for (int i = 0; i < codeMatrix.length; i++) { -// for (int j = 0; j < codeMatrix[i].length; j++) { -// DynamicNode dynamicNode = dynamicMatrix[i][j]; -// if (nodeType.equals(dynamicNode.getVehicle())) { -// codeList.add(new SortCodeDto(codeMatrix[i][j], dynamicNode.getSerial())); -// } -// } -// } - - return codeList.stream() - .sorted(Comparator.comparingInt(SortCodeDto::getSerial)) - .map(SortCodeDto::getCode) - .collect(Collectors.toList()); } public void modifyDynamicMatrix(Integer lev, List<int[]> codeIdxList, String vehicle) { -- Gitblit v1.9.1