From deb10b28cff67e731d0f6b268a91b9af5e76c3d9 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期三, 10 四月 2024 14:41:13 +0800 Subject: [PATCH] # --- zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/map/websocket/MockScheduler.java | 95 ++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 88 insertions(+), 7 deletions(-) diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/map/websocket/MockScheduler.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/map/websocket/MockScheduler.java index 9396a06..aa771de 100644 --- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/map/websocket/MockScheduler.java +++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/map/websocket/MockScheduler.java @@ -7,6 +7,9 @@ import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import java.util.ArrayList; +import java.util.List; + /** * Created by vincent on 4/3/2024 */ @@ -16,6 +19,7 @@ private int row = 1; private int bay = 1; private int lev = 1; + private boolean shouldIncreaseBay = true; @Scheduled(cron = "0/1 * * * * ? ") public void mock() { @@ -26,21 +30,98 @@ shuttleVo.setShuttleNo("1"); - if (bay < 30) { - bay ++; - } else { - bay = 1; - if (row < 10) { - row ++; + + if (shouldIncreaseBay) { + if (bay < 30) { + bay++; } else { - row = 1; + // bay 杈惧埌 30 鍚庯紝row 鍏堝 1 + if (row < 10) { + row++; + } else { + row = 1; // 濡傛灉 row 宸茬粡鏄渶澶э紝鍒欏洖鍒拌捣濮嬩綅缃� + } + shouldIncreaseBay = false; + } + } else { + if (bay > 1) { + bay--; + } else { + // bay 鍑忓埌 1 鍚庯紝鍒� row 鍏堝 1 + if (row < 10) { + row++; + } else { + row = 1; // 濡傛灉 row 宸茬粡鏄渶澶э紝鍒欏洖鍒拌捣濮嬩綅缃� + } + shouldIncreaseBay = true; } } + shuttleVo.setCurLocNo(Utils.getLocNo(row, bay, lev)); + List<String> preTravelPath = generateFullTravelPath(10, 30, lev); + shuttleVo.setTravelPath(preTravelPath); + + wsVo.getShuttleVos().add(shuttleVo); MapWebSocket.broadcast(JSON.toJSONString(wsVo)); } + private List<String> generateFullTravelPath(int maxRow, int maxBay, int currentLev) { + List<String> fullPath = new ArrayList<>(); + boolean increasingBay = true; // 鍋囪浠� bay = 1 寮�濮嬮�掑 + + for (int currentRow = 1; currentRow <= maxRow; currentRow++) { + if (increasingBay) { + for (int currentBay = 1; currentBay <= maxBay; currentBay++) { + fullPath.add(Utils.getLocNo(currentRow, currentBay, currentLev)); + } + } else { + for (int currentBay = maxBay; currentBay >= 1; currentBay--) { + fullPath.add(Utils.getLocNo(currentRow, currentBay, currentLev)); + } + } + increasingBay = !increasingBay; // 鍒拌揪姣忚鐨勬湯灏炬椂鏀瑰彉bay鐨勯�掑/閫掑噺鏂瑰悜 + } + return fullPath; + } + + private List<String> generatePreTravelPath(int currentRow, int currentBay, int currentLev, boolean increasingBay, int pathLength) { + List<String> path = new ArrayList<>(); + int tempRow = currentRow; + int tempBay = currentBay; + boolean tempIncreaseBay = increasingBay; + + for (int i = 0; i < pathLength; i++) { + if (tempIncreaseBay) { + if (tempBay < 30) { + tempBay++; + } else { + if (tempRow < 10) { + tempRow++; + } else { + tempRow = 1; // 濡傛灉 row 宸茬粡鏄渶澶э紝鍒欏洖鍒拌捣濮嬩綅缃� + } + tempIncreaseBay = false; + } + } else { + if (tempBay > 1) { + tempBay--; + } else { + if (tempRow < 10) { + tempRow++; + } else { + tempRow = 1; // 濡傛灉 row 宸茬粡鏄渶澶э紝鍒欏洖鍒拌捣濮嬩綅缃� + } + tempIncreaseBay = true; + } + } + // 灏嗙敓鎴愮殑搴撲綅鍙峰姞鍏ヨ矾寰勫垪琛� + path.add(Utils.getLocNo(tempRow, tempBay, currentLev)); + } + + return path; + } + } -- Gitblit v1.9.1