From 0836f55508cc79dfa3554a67058955ebf4830f62 Mon Sep 17 00:00:00 2001
From: DELL <DELL@qq.com>
Date: 星期四, 27 十一月 2025 15:11:20 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/network/fake/ZyStationFakeConnect.java | 192 +++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 173 insertions(+), 19 deletions(-)
diff --git a/src/main/java/com/zy/core/network/fake/ZyStationFakeConnect.java b/src/main/java/com/zy/core/network/fake/ZyStationFakeConnect.java
index 2425a7f..1ec6b2d 100644
--- a/src/main/java/com/zy/core/network/fake/ZyStationFakeConnect.java
+++ b/src/main/java/com/zy/core/network/fake/ZyStationFakeConnect.java
@@ -6,6 +6,7 @@
import com.zy.asrs.entity.DeviceConfig;
import com.zy.common.model.NavigateNode;
import com.zy.common.utils.NavigateUtils;
+import com.zy.core.News;
import com.zy.core.model.CommandResponse;
import com.zy.core.model.command.StationCommand;
import com.zy.core.network.api.ZyStationConnectApi;
@@ -26,7 +27,7 @@
private final DeviceConfig deviceConfig;
// 鍏佽骞惰鎵ц澶氫釜鍛戒护浠诲姟锛堝浐瀹氱嚎绋嬫睜锛夈�傚闇�鏇撮珮骞跺彂鍙皟鏁村ぇ灏忋��
private final ExecutorService executor = Executors
- .newFixedThreadPool(Math.max(2, Runtime.getRuntime().availableProcessors()));
+ .newFixedThreadPool(9999);
public ZyStationFakeConnect(DeviceConfig deviceConfig) {
this.deviceConfig = deviceConfig;
@@ -77,6 +78,74 @@
}
private void handleCommand(StationCommand command) {
+ News.info("[WCS Debug] 绔欑偣浠跨湡妯℃嫙宸插惎鍔紝鍛戒护鏁版嵁={}", JSON.toJSONString(command));
+ Integer taskNo = command.getTaskNo();
+ Integer stationId = command.getStationId();
+ Integer targetStationId = command.getTargetStaNo();
+
+ if(taskNo == 0 && targetStationId == 0){
+ //娓呯┖绔欑偣
+ resetStation(stationId);
+ return;
+ }
+
+ if (taskNo == 9999 && targetStationId == 0) {
+ //鐢熸垚浠跨湡鏁版嵁
+ generateFakeData(stationId, taskNo);
+ return;
+ }
+
+ if (taskNo == 9998 && targetStationId == 0) {
+ //鐢熸垚鍑哄簱绔欑偣浠跨湡鏁版嵁
+ generateFakeOutStationData(stationId);
+ return;
+ }
+
+ String startLev = String.valueOf(stationId).substring(0, 1);
+ String endLev = String.valueOf(targetStationId).substring(0, 1);
+
+ if (startLev.equals(endLev)) {
+ currentLevCommand(command);
+ }else {
+ diffLevCommand(command);
+ }
+ }
+
+ private void generateFakeData(Integer stationId, Integer taskNo) {
+ ZyStationStatusEntity status = statusList.stream()
+ .filter(item -> item.getStationId().equals(stationId)).findFirst().orElse(null);
+ if (status == null) {
+ return;
+ }
+
+ status.setTaskNo(taskNo);
+ status.setLoading(true);
+ status.setBarcode(String.valueOf(System.currentTimeMillis()));
+ }
+
+ private void generateFakeOutStationData(Integer stationId) {
+ ZyStationStatusEntity status = statusList.stream()
+ .filter(item -> item.getStationId().equals(stationId)).findFirst().orElse(null);
+ if (status == null) {
+ return;
+ }
+
+ status.setLoading(true);
+ }
+
+ private void resetStation(Integer stationId) {
+ ZyStationStatusEntity status = statusList.stream()
+ .filter(item -> item.getStationId().equals(stationId)).findFirst().orElse(null);
+ if (status == null) {
+ return;
+ }
+
+ status.setTaskNo(0);
+ status.setLoading(false);
+ status.setBarcode("");
+ }
+
+ private void currentLevCommand(StationCommand command) {
NavigateUtils navigateUtils = SpringUtils.getBean(NavigateUtils.class);
if (navigateUtils == null) {
return;
@@ -86,10 +155,12 @@
Integer stationId = command.getStationId();
Integer targetStationId = command.getTargetStaNo();
+ String startLev = String.valueOf(stationId).substring(0, 1);
+
List<NavigateNode> navigateNodes = null;
try {
- navigateNodes = navigateUtils.calcByStationId(stationId, targetStationId);
+ navigateNodes = navigateUtils.calcByStationId(Integer.parseInt(startLev), stationId, targetStationId);
} catch (Exception e) {
e.printStackTrace();
}
@@ -98,6 +169,86 @@
return;
}
+ stationMove(navigateNodes, taskNo, targetStationId, false);
+ }
+
+ private void diffLevCommand(StationCommand command) {
+ NavigateUtils navigateUtils = SpringUtils.getBean(NavigateUtils.class);
+ if (navigateUtils == null) {
+ return;
+ }
+
+ Integer taskNo = command.getTaskNo();
+ Integer stationId = command.getStationId();
+ Integer targetStationId = command.getTargetStaNo();
+
+ String startLev = String.valueOf(stationId).substring(0, 1);
+ String endLev = String.valueOf(targetStationId).substring(0, 1);
+
+ List<NavigateNode> navigateNodes = null;
+ List<NavigateNode> targetNavigateNodes = null;
+
+ try {
+ List<NavigateNode> liftStationList = navigateUtils.findLiftStationList(Integer.parseInt(startLev));
+ if(liftStationList.isEmpty()){
+ //鏈壘鍒版彁鍗囨満鑺傜偣
+ return;
+ }
+
+ List<NavigateNode> targetLiftStationList = navigateUtils.findLiftStationList(Integer.parseInt(endLev));
+ if(targetLiftStationList.isEmpty()){
+ //鏈壘鍒版彁鍗囨満鑺傜偣
+ return;
+ }
+ for (NavigateNode liftStation : liftStationList) {
+ JSONObject valuObject = JSON.parseObject(liftStation.getNodeValue());
+ if(valuObject == null){
+ continue;
+ }
+ Integer liftStationId = valuObject.getInteger("stationId");
+ Integer liftNo = valuObject.getInteger("liftNo");
+
+ Integer targetLiftStationId = null;
+ for (NavigateNode targetLiftStation : targetLiftStationList) {
+ JSONObject targetValuObject = JSON.parseObject(targetLiftStation.getNodeValue());
+ if(targetValuObject == null){
+ continue;
+ }
+ Integer targetLiftNo = targetValuObject.getInteger("liftNo");
+ if(liftNo.equals(targetLiftNo)){
+ targetLiftStationId = targetValuObject.getInteger("stationId");
+ break;
+ }
+ }
+
+ if(targetLiftStationId == null){
+ continue;
+ }
+
+ navigateNodes = navigateUtils.calcByStationId(Integer.parseInt(startLev), stationId, liftStationId);
+ if(navigateNodes == null){
+ continue;
+ }
+
+ //璁$畻鎻愬崌鏈哄埌鐩爣绔欑殑璺緞
+ targetNavigateNodes = navigateUtils.calcByStationId(Integer.parseInt(endLev), targetLiftStationId, targetStationId);
+ if(targetNavigateNodes == null) {
+ continue;
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ if (navigateNodes == null || targetNavigateNodes == null) {
+ return;
+ }
+
+ stationMove(navigateNodes, taskNo, stationId, true);
+ stationMove(targetNavigateNodes, taskNo, targetStationId, false);
+ }
+
+ private void stationMove(List<NavigateNode> navigateNodes, Integer taskNo, Integer targetStationId, boolean clearData) {
Integer lastStationId = null;
for (int i = 0; i < navigateNodes.size(); i++) {
NavigateNode navigateNode = navigateNodes.get(i);
@@ -117,7 +268,7 @@
continue;
}
- if (nextStatus.getTaskNo() == 0) {
+ if (nextStatus.getTaskNo() == 0 || nextStatus.getTaskNo() == 9999) {
break;
}
@@ -125,12 +276,6 @@
}
} catch (Exception e) {
continue;
- }
-
- synchronized (status) {
- status.setTaskNo(taskNo);
- status.setTargetStaNo(targetStationId);
- status.setLoading(true);
}
if (lastStationId != null) {
@@ -145,20 +290,29 @@
}
}
}
+
+ synchronized (status) {
+ status.setTaskNo(taskNo);
+ status.setTargetStaNo(targetStationId);
+ status.setLoading(true);
+ }
+
lastStationId = currentStationId;
sleep(1000);
}
- sleep(10000);
- if (lastStationId != null) {
- Integer finalLastStationId = lastStationId;
- ZyStationStatusEntity lastStatus = statusList.stream()
- .filter(item -> item.getStationId().equals(finalLastStationId)).findFirst().orElse(null);
- if (lastStatus != null) {
- synchronized (lastStatus) {
- lastStatus.setTaskNo(0);
- lastStatus.setTargetStaNo(0);
- lastStatus.setLoading(false);
+ if (clearData) {
+ sleep(10000);
+ if (lastStationId != null) {
+ Integer finalLastStationId = lastStationId;
+ ZyStationStatusEntity lastStatus = statusList.stream()
+ .filter(item -> item.getStationId().equals(finalLastStationId)).findFirst().orElse(null);
+ if (lastStatus != null) {
+ synchronized (lastStatus) {
+ lastStatus.setTaskNo(0);
+ lastStatus.setTargetStaNo(0);
+ lastStatus.setLoading(false);
+ }
}
}
}
--
Gitblit v1.9.1