From 86620f192814851deb88c1a1bc78ba8555966cda Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期五, 03 一月 2025 15:34:16 +0800 Subject: [PATCH] # --- zy-acs-flow/src/map/constants.js | 2 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java | 3 - zy-acs-manager/src/main/java/com/zy/acs/manager/manager/mapper/AgvDetailMapper.java | 2 + zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/AgvDetailService.java | 2 + zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/MapDataWsScheduler.java | 2 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/AStarNavigateService.java | 44 ++++++++++++--------- version/db/sqlIndex | 17 ++++++++ zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvDetailServiceImpl.java | 5 ++ zy-acs-manager/src/main/resources/mapper/manager/AgvDetailMapper.xml | 7 +++ zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/PatrolService.java | 11 ++--- zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java | 7 +-- zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java | 2 + 12 files changed, 69 insertions(+), 35 deletions(-) diff --git a/version/db/sqlIndex b/version/db/sqlIndex index 43914a2..f77521b 100644 --- a/version/db/sqlIndex +++ b/version/db/sqlIndex @@ -1,17 +1,34 @@ +# man_action CREATE INDEX idx_agv_action ON man_action(agv_id, action_sts); CREATE INDEX idx_group_io_time ON man_action(group_id, io_time); CREATE INDEX idx_priority ON man_action(priority); CREATE INDEX idx_action_sts ON man_action(action_sts); +# man_action_sts CREATE INDEX idx_action_sts_uuid ON man_action_sts(uuid); +# man_action_type CREATE INDEX idx_action_type_uuid ON man_action_type(uuid); +# man_agv_model CREATE INDEX idx_agv_model_type ON man_agv_model(type); +# man_bus_sts CREATE INDEX idx_bus_sts_uuid ON man_bus_sts(uuid); +# man_loc_sts CREATE INDEX idx_loc_sts_uuid ON man_loc_sts(uuid); +# man_task_sts CREATE INDEX idx_task_sts_uuid ON man_task_sts(uuid); +# man_task_type CREATE INDEX idx_task_type_uuid ON man_task_type(uuid); +# man_task CREATE INDEX idx_task_seq_num ON man_task(seq_num); CREATE INDEX idx_task_agv_id ON man_task(agv_id); CREATE INDEX idx_task_agv_id_task_sts ON man_task(agv_id, task_sts); +# man_zone CREATE INDEX idx_zone_uuid ON man_zone(uuid); +# man_agv_detail CREATE INDEX idx_agv_detail_agv_id ON man_agv_detail(agv_id); +CREATE INDEX idx_agv_id_code_pos ON man_agv_detail(agv_id, code, pos); +# man_agv +CREATE INDEX idx_agv_uuid ON man_agv(uuid); +CREATE INDEX idx_agv_deleted_uuid ON man_agv (deleted, uuid); +# sys_config CREATE INDEX idx_config_flag ON sys_config(flag); +CREATE INDEX idx_config_deleted_flag ON sys_config(deleted, flag); \ No newline at end of file diff --git a/zy-acs-flow/src/map/constants.js b/zy-acs-flow/src/map/constants.js index 58869f5..d7d46c0 100644 --- a/zy-acs-flow/src/map/constants.js +++ b/zy-acs-flow/src/map/constants.js @@ -1,5 +1,5 @@ -export const ANIMATE_DURING_TIME = 300; +export const ANIMATE_DURING_TIME = 800; export const MAP_DEFAULT_ROTATION = 270; 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 3c7e5ab..c0d5448 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 @@ -33,7 +33,7 @@ @Component public class MapDataWsScheduler { - public static final int WEBSOCKET_BROADCAST_INTERVAL = 300; + public static final int WEBSOCKET_BROADCAST_INTERVAL = 800; private ExecutorService singleThreadExecutor; 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 8e9827a..b832872 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 @@ -658,7 +658,6 @@ assert agvSpeedType != null; AgvDetail agvDetail = agvDetailService.selectByAgvId(agvId); - assert agvDetail != null; List<Action> actionList = new ArrayList<>(); // start node @@ -697,7 +696,7 @@ nextDirection = workDirection; reverse = true; } - if (!lastDirection.equals(nextDirection) || actionList.size() == 0) { + if (!lastDirection.equals(nextDirection) || actionList.isEmpty()) { // turn actionList.add(new Action( null, // 缂栧彿 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 7e4a8f2..b43c1d8 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 @@ -58,7 +58,9 @@ AStarNavigateNode startNode = new AStarNavigateNode(startMapIdx[0], startMapIdx[1], startCode.getData()); AStarNavigateNode endNode = new AStarNavigateNode(endMapIdx[0], endMapIdx[1], endCode.getData()); +// long startTime = System.currentTimeMillis(); AStarNavigateNode finishNode = aStarNavigateService.execute(agvNo, startNode, endNode, lock, blackList, segment); +// System.out.println("A Star Spend time :" + (System.currentTimeMillis() - startTime)); if (null == finishNode) { return new ArrayList<>(); } 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 d9cca2f..d213f35 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 @@ -34,7 +34,7 @@ @Service public class PatrolService { - private static final int SCHEDULE_TIME_INTERVAL = 300; + private static final int SCHEDULE_TIME_INTERVAL = 100; public static final Map<String, ScheduledFuture<?>> AGV_PATROL_MAP = new ConcurrentHashMap<>(); @@ -67,14 +67,11 @@ private void patrolOfMove(String agvNo) { Agv agv = agvService.selectByUuid(agvNo); - AgvDetail agvDetail = agvDetailService.selectByAgvId(agv.getId()); + AgvDetail agvDetail = agvDetailService.selectMajorByAgvId(agv.getId()); if (taskService.count(new LambdaQueryWrapper<Task>() .eq(Task::getAgvId, agv.getId()) - .and(i -> { - i.eq(Task::getTaskSts, TaskStsType.WAITING.val()) - .or().eq(Task::getTaskSts, TaskStsType.ASSIGN.val()) - .or().eq(Task::getTaskSts, TaskStsType.PROGRESS.val()); - })) > 0) { + .in(Task::getTaskSts, TaskStsType.ASSIGN.val(), TaskStsType.PROGRESS.val()) + ) > 0) { return; } if (!agvService.judgeEnable(agv.getId())) { diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/AStarNavigateService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/AStarNavigateService.java index ef32661..139fa84 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/AStarNavigateService.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/AStarNavigateService.java @@ -15,7 +15,6 @@ import org.springframework.stereotype.Service; import java.util.*; -import java.util.concurrent.CopyOnWriteArrayList; /** * Created by vincent on 6/12/2024 @@ -63,15 +62,23 @@ String[][] codeMatrix = mapDataDispatcher.getCodeMatrix(null); DynamicNode[][] dynamicMatrix = mapDataDispatcher.getDynamicMatrix(null); String[][] waveMatrix = mapDataDispatcher.getWaveMatrix(null); + + long getNeighborNodesTime = 0; + int getNeighborNodesCount = 0; + while (!openQueue.isEmpty()) { // 鍙栦紭鍏堥槦鍒楅《閮ㄥ厓绱犲苟涓旀妸杩欎釜鍏冪礌浠嶰pen琛ㄤ腑鍒犻櫎锛屽彇F鍊兼渶灏忕殑鑺傜偣 AStarNavigateNode currentNode = openQueue.poll(); // 缁堢偣 if (currentNode.getX() == end.getX() && currentNode.getY() == end.getY()) { +// System.out.println("getNeighborNodes spend time: " + getNeighborNodesTime +", count: " + getNeighborNodesCount); return currentNode; } + long currentTime = System.currentTimeMillis(); List<AStarNavigateNode> neighbourNodes = this.getNeighborNodes(currentNode, mapMatrix, existNodes); + getNeighborNodesTime += System.currentTimeMillis() - currentTime; + getNeighborNodesCount ++; for (AStarNavigateNode node : neighbourNodes) { node.setCodeData(codeMatrix[node.getX()][node.getY()]); @@ -97,6 +104,9 @@ assert !vehicle.equals(DynamicNodeType.BLOCK.val); if (!vehicle.equals(DynamicNodeType.ACCESS.val)) { if (!vehicle.equals(agvNo)) { + if (lock) { + continue; + } // 濡傛灉瀛樺湪杞﹁締锛屽垯澧炲姞鏉冮噸 2 鎴栬�� 3锛屽洜涓烘嫄鐐逛細澧炲姞鏉冮噸 1 // vehicle宸茬粡涓哄綋鍓峴egment鍋氳繃浜嗛伩璁╋紝涓旈伩璁╀换鍔″凡瀹屾垚锛屽垯鏉冮噸鍊煎鍔� @@ -107,10 +117,6 @@ weight += (WEIGHT_CALC_FACTOR * 2); } } - - if (lock) { - continue; - } } } @@ -120,7 +126,6 @@ if (!waveNode.equals(WaveNodeType.ENABLE.val)) { List<String> waveNodeList = MapDataUtils.parseWaveNode(waveNode); List<String> otherWaveList = MapDataUtils.hasOtherWave(waveNodeList, agvNo); - if (!Cools.isEmpty(otherWaveList)) { if (lock) { @@ -178,7 +183,7 @@ // existNodes.add(node); } } - +// System.out.println("getNeighborNodes spend time: " + getNeighborNodesTime +", count: " + getNeighborNodesCount); return null; } @@ -191,14 +196,8 @@ int y = currentNode.getY(); AStarNavigateNode parent = currentNode.getParent(); - List<AStarNavigateNode> neighbourNodes = new CopyOnWriteArrayList<>(); - -// List<AStarNavigateNode> possibleNodes = Arrays.asList( -// new AStarNavigateNode(x, y + 1), // right -// new AStarNavigateNode(x, y - 1), // left -// new AStarNavigateNode(x - 1, y), // up -// new AStarNavigateNode(x + 1, y) // down -// ); +// List<AStarNavigateNode> neighbourNodes = new CopyOnWriteArrayList<>(); + List<AStarNavigateNode> neighbourNodes = new ArrayList<>(); List<AStarNavigateNode> possibleNodes = new ArrayList<>(); for (int[] d: DIRECTIONS) { @@ -211,10 +210,17 @@ possibleNodes.add(new AStarNavigateNode(nx, ny)); } - possibleNodes.parallelStream() - .map(extendNode -> extendNeighborNodes(currentNode, extendNode, mapMatrix, existNodes, null, null)) - .filter(Objects::nonNull) - .forEach(neighbourNodes::add); +// possibleNodes.parallelStream() +// .map(extendNode -> extendNeighborNodes(currentNode, extendNode, mapMatrix, existNodes, null, null)) +// .filter(Objects::nonNull) +// .forEach(neighbourNodes::add); + + for (AStarNavigateNode pn : possibleNodes) { + AStarNavigateNode next = extendNeighborNodes(currentNode, pn, mapMatrix, existNodes, null, null); + if (next != null) { + neighbourNodes.add(next); + } + } return neighbourNodes; } diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/mapper/AgvDetailMapper.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/mapper/AgvDetailMapper.java index b0e24ed..944d5ef 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/mapper/AgvDetailMapper.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/mapper/AgvDetailMapper.java @@ -6,6 +6,8 @@ public interface AgvDetailMapper extends BaseMapper<AgvDetail> { + AgvDetail selectMajorByAgvId(@Param("agvId") Long agvId); + int updatePosCode(@Param("id") Long id, @Param("codeId") Long codeId); int updateUnPosCode(@Param("id") Long id, @Param("lastCode") Long lastCode); 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 cacb293..1a6ac7c 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 @@ -7,6 +7,8 @@ public interface AgvDetailService extends IService<AgvDetail> { + AgvDetail selectMajorByAgvId(Long agvId); + AgvDetail selectByAgvId(Long agvId); AgvDetail selectByAgvNo(String agvNo); 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 816efbd..ee09499 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 @@ -21,6 +21,11 @@ private AgvModelService agvModelService; @Override + public AgvDetail selectMajorByAgvId(Long agvId) { + return this.baseMapper.selectMajorByAgvId(agvId); + } + + @Override public AgvDetail selectByAgvId(Long agvId) { return this.getOne(new LambdaQueryWrapper<AgvDetail>().eq(AgvDetail::getAgvId, agvId)); } diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java index 1136ac6..296f944 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java @@ -77,10 +77,7 @@ AgvModel agvModel = agvModelService.getById(agv.getAgvModel()); if (0 < segmentService.count(new LambdaQueryWrapper<Segment>() .eq(Segment::getAgvId, agvId) - .and( i -> { -// i.eq(Segment::getState, SegmentStateType.WAITING.toString()).or() - i.eq(Segment::getState, SegmentStateType.RUNNING.toString()); - }) + .eq(Segment::getState, SegmentStateType.RUNNING.toString()) )) { log.warn("[{}]鍙稟gv姝e湪蹇欑 - segment......", agv.getUuid()); return false; @@ -89,7 +86,7 @@ log.warn("[{}]鍙稟gv涓嶆槸鍦ㄧ嚎鐘舵��......", agv.getUuid()); return false; } - AgvDetail agvDetail = agvDetailService.selectByAgvId(agv.getId()); + AgvDetail agvDetail = agvDetailService.selectMajorByAgvId(agv.getId()); if (null == agvDetail) { log.warn("[{}]鍙稟gv鏈敹鍒扮姸鎬佸寘......", agv.getUuid()); return false; diff --git a/zy-acs-manager/src/main/resources/mapper/manager/AgvDetailMapper.xml b/zy-acs-manager/src/main/resources/mapper/manager/AgvDetailMapper.xml index 2239272..2e36048 100644 --- a/zy-acs-manager/src/main/resources/mapper/manager/AgvDetailMapper.xml +++ b/zy-acs-manager/src/main/resources/mapper/manager/AgvDetailMapper.xml @@ -26,6 +26,13 @@ </where> </sql> + <select id="selectMajorByAgvId" resultType="com.zy.acs.manager.manager.entity.AgvDetail"> + SELECT id, agv_id, pos, code, last_code, agv_angle, vol, backpack, status, deleted + FROM man_agv_detail + WHERE agv_id = #{agvId} + LIMIT 1 + </select> + <update id="updatePosCode"> update man_agv_detail set code = #{codeId}, -- Gitblit v1.9.1