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