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