From 411b69b35e91d3d75fb7de7de1bc50e148038959 Mon Sep 17 00:00:00 2001 From: Junjie <540245094@qq.com> Date: 星期日, 03 八月 2025 08:58:12 +0800 Subject: [PATCH] # --- src/main/java/com/zy/common/utils/NavigateUtils.java | 71 ++++++++++++++++++++++++----------- 1 files changed, 49 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/zy/common/utils/NavigateUtils.java b/src/main/java/com/zy/common/utils/NavigateUtils.java index c6e94ab..d49b64b 100644 --- a/src/main/java/com/zy/common/utils/NavigateUtils.java +++ b/src/main/java/com/zy/common/utils/NavigateUtils.java @@ -2,7 +2,8 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; -import com.core.common.SpringUtils; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.core.common.SnowflakeIdWorker; import com.core.exception.CoolException; import com.zy.asrs.utils.Utils; import com.zy.common.model.MapNode; @@ -11,6 +12,8 @@ import com.zy.core.News; import com.zy.core.enums.MapNodeType; import com.zy.core.model.PythonSimilarityResult; +import com.zy.system.entity.Config; +import com.zy.system.service.ConfigService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @@ -31,6 +34,10 @@ private String pythonCalcSimilarity; @Autowired private NavigateMapData navigateMapData; + @Autowired + private SnowflakeIdWorker snowflakeIdWorker; + @Autowired + private ConfigService configService; public List<NavigateNode> calc(String startPoint, String endPoint, List<NavigationMapType> mapTypes, List<int[]> shuttlePoints, List<int[]> whites) { return calcJava(startPoint, endPoint, mapTypes, shuttlePoints, whites); @@ -288,10 +295,13 @@ * 鑾峰彇鍒嗘璺緞锛屾瘡褰撴湁涓�涓嫄鐐瑰垯杩涜涓�娆″垎娈碉紝鏈�缁堣繑鍥炴�诲垎娈垫暟鎹� */ public List<List<NavigateNode>> getSectionPath(List<NavigateNode> mapList) { - List<List<NavigateNode>> list = new ArrayList<>(); + NavigateNode firstNode = mapList.get(0); + //鑾峰彇鍦板浘 + List<List<MapNode>> mapNodes = navigateMapData.getJsonData(firstNode.getZ(), NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null); + List<List<NavigateNode>> list = new ArrayList<>(); List<NavigateNode> data = new ArrayList<>(); - String direction = mapList.get(0).getDirection();//琛岃蛋鏂瑰悜 + String direction = firstNode.getDirection();//琛岃蛋鏂瑰悜 for (NavigateNode navigateNode : mapList) { data.add(navigateNode); @@ -306,22 +316,30 @@ //鐩磋绾胯矾 navigateNode.setDirection(direction);//璁剧疆琛岃蛋鏂瑰悜 } - Integer distance = getXToNextDistance(navigateNode);//鑾峰彇褰撳墠鐐瑰埌涓嬩竴鐐圭殑琛岃蛋璺濈 + Integer distance = getXToNextDistance(mapNodes, navigateNode);//鑾峰彇褰撳墠鐐瑰埌涓嬩竴鐐圭殑琛岃蛋璺濈 navigateNode.setMoveDistance(distance); } //灏嗘渶鍚庝竴娈垫暟鎹坊鍔犺繘鍏� list.add(data); + //鍒嗘璺緞-澶勭悊瓒呴暱鐩寸嚎娈佃矾寰� List<List<NavigateNode>> paths = getSectionPathToSplitOverLength(list); return paths; } //鍒嗘璺緞-澶勭悊瓒呴暱鐩寸嚎娈佃矾寰� public List<List<NavigateNode>> getSectionPathToSplitOverLength(List<List<NavigateNode>> list) { + int overLength = 9;//榛樿9鑺� + Config shuttleMoveOverLengthConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "shuttleMoveOverLength")); + if (shuttleMoveOverLengthConfig != null) { + overLength = Integer.parseInt(shuttleMoveOverLengthConfig.getValue()); + } + List<List<NavigateNode>> paths = new ArrayList<>(); - int overLength = 9; for (List<NavigateNode> nodes : list) { + long nextId = snowflakeIdWorker.nextId(); + if (nodes.size() > overLength) { List<NavigateNode> copy = JSON.parseArray(JSON.toJSONString(nodes), NavigateNode.class); List<NavigateNode> tmp = new ArrayList<>(); @@ -335,10 +353,12 @@ if (lastNode == null) { NavigateNode startNode = tmp.get(0); startNode.setLinePartAllowGo(true);//鐩寸嚎娈佃秴闀块儴鍒嗗厑璁哥洿鎺ヨ璧� + startNode.setLinePartFlag(nextId);//鐩寸嚎娈垫暟鎹爣璇� tmp.set(0, startNode); } NavigateNode targetNode = tmp.get(tmp.size() - 1); targetNode.setLinePartAllowGo(true);//鐩寸嚎娈佃秴闀块儴鍒嗗厑璁哥洿鎺ヨ璧� + targetNode.setLinePartFlag(nextId);//鐩寸嚎娈垫暟鎹爣璇� if (lastNode != null) { tmp.add(0, lastNode); } @@ -355,6 +375,10 @@ paths.add(tmp); } }else { + NavigateNode startNode = nodes.get(0); + startNode.setLinePartAllowGo(true);//鐩寸嚎娈佃秴闀块儴鍒嗗厑璁哥洿鎺ヨ璧� + startNode.setLinePartFlag(nextId);//鐩寸嚎娈垫暟鎹爣璇� + nodes.set(0, startNode); paths.add(nodes); } } @@ -362,25 +386,28 @@ } //鑾峰彇浠巟鐐瑰埌涓嬩竴鐐圭殑琛岃蛋璺濈 - public Integer getXToNextDistance(NavigateNode xNode) { - NavigateMapData mapData = SpringUtils.getBean(NavigateMapData.class); - List<List<MapNode>> lists = mapData.getJsonData(xNode.getZ(), NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null); - if (lists != null) { - MapNode mapNode = lists.get(xNode.getX()).get(xNode.getY()); - if (mapNode != null) { - switch (xNode.getDirection()) { - case "top": - return mapNode.getTop(); - case "bottom": - return mapNode.getBottom(); - case "left": - return mapNode.getLeft(); - case "right": - return mapNode.getRight(); - } - } + public Integer getXToNextDistance(List<List<MapNode>> mapLists, NavigateNode xNode) { + if (mapLists == null) { return 0; } + + if (mapLists.isEmpty()) { + return 0; + } + + MapNode mapNode = mapLists.get(xNode.getX()).get(xNode.getY()); + if (mapNode != null) { + switch (xNode.getDirection()) { + case "top": + return mapNode.getTop(); + case "bottom": + return mapNode.getBottom(); + case "left": + return mapNode.getLeft(); + case "right": + return mapNode.getRight(); + } + } return 0; } -- Gitblit v1.9.1