From 7f70cb15d035f0c233b9e62b9e43aa985317c908 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期一, 04 十一月 2024 10:22:45 +0800 Subject: [PATCH] # --- zy-acs-manager/src/main/java/com/zy/acs/manager/core/DispatcherTestController.java | 137 +++------------------------------------------ 1 files changed, 10 insertions(+), 127 deletions(-) diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/DispatcherTestController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/DispatcherTestController.java index 708d4fb..4c85e56 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/DispatcherTestController.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/DispatcherTestController.java @@ -1,21 +1,15 @@ package com.zy.acs.manager.core; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.zy.acs.common.utils.GsonUtils; import com.zy.acs.framework.common.R; -import com.zy.acs.framework.common.SnowflakeIdWorker; -import com.zy.acs.manager.core.domain.Lane; -import com.zy.acs.manager.manager.entity.Code; -import com.zy.acs.manager.manager.entity.Route; -import com.zy.acs.manager.manager.service.CodeService; -import com.zy.acs.manager.manager.service.RouteService; +import com.zy.acs.manager.core.service.LaneService; +import com.zy.acs.manager.manager.entity.Task; +import com.zy.acs.manager.manager.service.TaskService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.*; -import java.util.stream.Collectors; +import java.util.List; /** * Created by vincent on 10/24/2024 @@ -25,126 +19,15 @@ public class DispatcherTestController { @Autowired - private CodeService codeService; + private LaneService laneService; @Autowired - private RouteService routeService; - @Autowired - private SnowflakeIdWorker snowflakeIdWorker; + private TaskService taskService; - @GetMapping("/dfs") - public R dfs() { - List<Lane> lanes = new ArrayList<>(); - List<Code> codeList = codeService.list(new LambdaQueryWrapper<Code>().eq(Code::getStatus, 1)); - Map<String, List<String>> adjacencyCodeMap = new HashMap<>(); - for (Code code : codeList) { - List<Long> adjacencyNode = routeService.getAdjacencyNode(code.getId()); - adjacencyCodeMap.put(code.getData(), adjacencyNode.stream().map(node -> { - return codeService.getById(node).getData(); - }).collect(Collectors.toList())); - } - List<String> codeDataList = codeList.stream().map(Code::getData).collect(Collectors.toList()); - System.out.println(codeDataList.toString()); - System.out.println(adjacencyCodeMap.toString()); + @GetMapping("/lanes") + public R getLanes() { + List<Task> taskList = taskService.findRunningTasksByLaneHash("4b81ebaedd8ed7662d37b63e20dec5dd089d4c32136b8826c6323839fe51938e"); - - Set<String> visited = new HashSet<>(); - - // 閬嶅巻鎵�鏈夎妭鐐癸紝瀵绘壘搴︽暟涓嶇瓑浜�2鐨勮妭鐐逛綔涓鸿捣鐐� - for (String codeData : codeDataList) { - if (adjacencyCodeMap.getOrDefault(codeData, Collections.emptyList()).size() != 2) { - List<String> neighbors = adjacencyCodeMap.getOrDefault(codeData, Collections.emptyList()); - for (String neighbor : neighbors) { - // 浠呴亶鍘嗗害鏁颁负2涓旀湭琚闂殑閭诲眳 - if (adjacencyCodeMap.getOrDefault(neighbor, Collections.emptyList()).size() == 2 && !visited.contains(neighbor)) { - Lane lane = new Lane(String.valueOf(snowflakeIdWorker.nextId()).substring(3)); - dfsCalc(neighbor, codeData, lane, visited, adjacencyCodeMap); - lanes.add(lane); - } - } - } - } - - // 澶勭悊搴︽暟涓�2涓旇繛鎺ヤ袱涓嫄寮偣鐨勮妭鐐癸紙鐙珛宸烽亾锛� - for (String codeData : codeDataList) { - if (adjacencyCodeMap.getOrDefault(codeData, Collections.emptyList()).size() == 2 && !visited.contains(codeData)) { - List<String> neighbors = adjacencyCodeMap.getOrDefault(codeData, Collections.emptyList()); - boolean connectedToTwoTurningPoints = true; - for (String neighbor : neighbors) { - if (adjacencyCodeMap.getOrDefault(neighbor, Collections.emptyList()).size() == 2) { - connectedToTwoTurningPoints = false; - break; - } - } - if (connectedToTwoTurningPoints) { - Lane lane = new Lane(String.valueOf(snowflakeIdWorker.nextId()).substring(3)); - lane.getCodes().add(codeData); - lanes.add(lane); - visited.add(codeData); - } - } - } - - - System.out.println(GsonUtils.toJson(lanes)); - return R.ok().add(lanes); + return R.ok().add(laneService.search("00000010")); } - - - private void dfsCalc(String code, String parent, Lane lane, Set<String> visited, Map<String, List<String>> adjacencyCodeMap) { - // 妫�鏌ュ綋鍓嶈妭鐐圭殑搴︽暟鏄惁涓�2 - if (adjacencyCodeMap.getOrDefault(code, Collections.emptyList()).size() != 2) { - // 涓嶅寘鍚嫄寮偣 - return; - } - - // 鏍囪涓哄凡璁块棶骞跺姞鍏ュ贩閬� - visited.add(code); - lane.getCodes().add(code); - - List<String> neighbors = adjacencyCodeMap.get(code); - if (neighbors == null || neighbors.isEmpty()) { - return; - } - - for (String neighbor : neighbors) { - if (neighbor.equals(parent)) { - continue; - } - - if (adjacencyCodeMap.getOrDefault(neighbor, Collections.emptyList()).size() == 2 && !visited.contains(neighbor)) { - // 妫�鏌ユ柟鍚戞槸鍚︿竴鑷� - if (isSameDirection(code, neighbor, parent)) { - dfsCalc(neighbor, code, lane, visited, adjacencyCodeMap); - } - } - } - } - - public boolean isSameDirection(String code, String neighbor, String parent) { - if (parent == null) { - return true; - } - - Code parentCode = codeService.selectByData(parent); - Code currentCode = codeService.selectByData(code); - Code neighborCode = codeService.selectByData(neighbor); - - double direction1 = calculateDirection(parentCode, currentCode); - double direction2 = calculateDirection(currentCode, neighborCode); - double angleDifference = Math.abs(direction1 - direction2); - - // 瑙勮寖鍖栬搴﹀樊 - angleDifference = Math.min(angleDifference, 2 * Math.PI - angleDifference); - - // 璁剧疆瑙掑害宸槇鍊间负3搴� - return angleDifference < Math.toRadians(3); - } - - public double calculateDirection(Code from, Code to) { - double deltaX = to.getX() - from.getX(); - double deltaY = to.getY() - from.getY(); - return Math.atan2(deltaY, deltaX); - } - } -- Gitblit v1.9.1