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/MapService.java |   41 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 41 insertions(+), 0 deletions(-)

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());
+    }
+
 }

--
Gitblit v1.9.1