From 9d24c64b9d81ae166f4c150f038793304d7161fa Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期五, 19 十二月 2025 11:13:46 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/network/fake/ZyStationFakeConnect.java | 130 +++++++++++++++++++++++++++++++------------
1 files changed, 93 insertions(+), 37 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 524807a..faf66f7 100644
--- a/src/main/java/com/zy/core/network/fake/ZyStationFakeConnect.java
+++ b/src/main/java/com/zy/core/network/fake/ZyStationFakeConnect.java
@@ -14,6 +14,7 @@
import com.zy.core.network.api.ZyStationConnectApi;
import com.zy.core.network.entity.ZyStationStatusEntity;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -27,17 +28,22 @@
*/
public class ZyStationFakeConnect implements ZyStationConnectApi {
- private final List<ZyStationStatusEntity> statusList = new CopyOnWriteArrayList<>();
private static int LOCK_STATION = 0;
- private final DeviceConfig deviceConfig;
+ private HashMap<Integer, List<ZyStationStatusEntity>> deviceStatusMap = new HashMap<>();
+ private HashMap<Integer, DeviceConfig> deviceConfigMap = new HashMap<>();
private RedisUtil redisUtil;
// 鍏佽骞惰鎵ц澶氫釜鍛戒护浠诲姟锛堝浐瀹氱嚎绋嬫睜锛夈�傚闇�鏇撮珮骞跺彂鍙皟鏁村ぇ灏忋��
private final ExecutorService executor = Executors
.newFixedThreadPool(9999);
- public ZyStationFakeConnect(DeviceConfig deviceConfig, RedisUtil redisUtil) {
- this.deviceConfig = deviceConfig;
+ public void addFakeConnect(DeviceConfig deviceConfig, RedisUtil redisUtil) {
this.redisUtil = redisUtil;
+
+ if (deviceConfigMap.containsKey(deviceConfig.getDeviceNo())) {
+ return;
+ }
+ deviceConfigMap.put(deviceConfig.getDeviceNo(), deviceConfig);
+ deviceStatusMap.put(deviceConfig.getDeviceNo(), new CopyOnWriteArrayList<>());
}
@Override
@@ -52,12 +58,17 @@
}
@Override
- public List<ZyStationStatusEntity> getStatus() {
- if (this.statusList.isEmpty()) {
+ public List<ZyStationStatusEntity> getStatus(Integer deviceNo) {
+ List<ZyStationStatusEntity> statusList = deviceStatusMap.get(deviceNo);
+ if (statusList == null) {
+ return new ArrayList<>();
+ }
+ DeviceConfig deviceConfig = deviceConfigMap.get(deviceNo);
+ if (statusList.isEmpty()) {
List<ZyStationStatusEntity> init = JSON.parseArray(deviceConfig.getFakeInitStatus(), ZyStationStatusEntity.class);
if (init != null) {
statusList.addAll(init);
- for (ZyStationStatusEntity status : this.statusList) {
+ for (ZyStationStatusEntity status : statusList) {
status.setAutoing(true);// 妯℃嫙鑷姩杩愯
status.setLoading(false);// 妯℃嫙鏈夌墿
status.setInEnable(true);// 妯℃嫙鍙叆
@@ -72,14 +83,14 @@
}
}
- return this.statusList;
+ return statusList;
}
@Override
- public CommandResponse sendCommand(StationCommand command) {
+ public CommandResponse sendCommand(Integer deviceNo, StationCommand command) {
executor.submit(() -> {
try {
- handleCommand(command);
+ handleCommand(deviceNo, command);
} catch (Exception e) {
e.printStackTrace();
}
@@ -87,7 +98,7 @@
return new CommandResponse(true, "鍛戒护宸插彈鐞嗭紙寮傛鎵ц锛�");
}
- private void handleCommand(StationCommand command) {
+ private void handleCommand(Integer deviceNo, StationCommand command) {
News.info("[WCS Debug] 绔欑偣浠跨湡妯℃嫙宸插惎鍔紝鍛戒护鏁版嵁={}", JSON.toJSONString(command));
Integer taskNo = command.getTaskNo();
Integer stationId = command.getStationId();
@@ -96,7 +107,7 @@
if(taskNo == 0 && targetStationId == 0){
//娓呯┖绔欑偣
- resetStation(stationId);
+ resetStation(deviceNo, stationId);
return;
}
@@ -108,13 +119,13 @@
if (taskNo == 9998 && targetStationId == 0) {
//鐢熸垚鍑哄簱绔欑偣浠跨湡鏁版嵁
- generateFakeOutStationData(stationId);
+ generateFakeOutStationData(deviceNo, stationId);
return;
}
if (taskNo > 0 && taskNo != 9999 && taskNo != 9998 && stationId == targetStationId) {
//涓嬪彂浠诲姟鏁版嵁-涓嶅厑璁稿彧鏄笅鍙戞暟鎹�
- generateStationData(taskNo, stationId, targetStationId);
+ generateStationData(deviceNo, taskNo, stationId, targetStationId);
}
String startLev = String.valueOf(stationId).substring(0, 1);
@@ -127,7 +138,8 @@
}
}
- private void generateFakeOutStationData(Integer stationId) {
+ private void generateFakeOutStationData(Integer deviceNo, Integer stationId) {
+ List<ZyStationStatusEntity> statusList = deviceStatusMap.get(deviceNo);
ZyStationStatusEntity status = statusList.stream()
.filter(item -> item.getStationId().equals(stationId)).findFirst().orElse(null);
if (status == null) {
@@ -139,7 +151,8 @@
}
}
- private void generateStationData(Integer taskNo, Integer stationId, Integer targetStationId) {
+ private void generateStationData(Integer deviceNo, Integer taskNo, Integer stationId, Integer targetStationId) {
+ List<ZyStationStatusEntity> statusList = deviceStatusMap.get(deviceNo);
ZyStationStatusEntity status = statusList.stream()
.filter(item -> item.getStationId().equals(stationId)).findFirst().orElse(null);
if (status == null) {
@@ -152,7 +165,8 @@
}
}
- private void resetStation(Integer stationId) {
+ private void resetStation(Integer deviceNo, Integer stationId) {
+ List<ZyStationStatusEntity> statusList = deviceStatusMap.get(deviceNo);
ZyStationStatusEntity status = statusList.stream()
.filter(item -> item.getStationId().equals(stationId)).findFirst().orElse(null);
if (status == null) {
@@ -273,6 +287,7 @@
private boolean stationMove(List<NavigateNode> navigateNodes, Integer taskNo, Integer targetStationId, boolean clearData, boolean generateBarcode) {
Integer lastStationId = null;
+ Integer targetStationDeviceNo = null;
long executeTime = System.currentTimeMillis();
int i = 0;
@@ -283,12 +298,18 @@
NavigateNode navigateNode = navigateNodes.get(i);
JSONObject valueObject = JSON.parseObject(navigateNode.getNodeValue());
Integer currentStationId = valueObject.getInteger("stationId");
+ Integer currentStationDeviceNo = valueObject.getInteger("deviceNo");
+ if (currentStationId.equals(targetStationId)) {
+ targetStationDeviceNo = currentStationDeviceNo;
+ }
Integer nextStationId = null;
+ Integer nextStationDeviceNo = null;
try {
NavigateNode nextNode = navigateNodes.get(i + 1);
JSONObject nextValueObject = JSON.parseObject(nextNode.getNodeValue());
nextStationId = nextValueObject.getInteger("stationId");
+ nextStationDeviceNo = nextValueObject.getInteger("deviceNo");
} catch (Exception e) {
}
@@ -305,7 +326,7 @@
if (fakeAllowCheckBlock && System.currentTimeMillis() - executeTime > 1000 * 10) {
//璁ゅ畾鍫靛
- boolean result = runBlockStation(taskNo, currentStationId, taskNo, currentStationId);
+ boolean result = runBlockStation(taskNo, currentStationId, currentStationDeviceNo, taskNo, currentStationId);
if(!result) {
continue;
}
@@ -314,7 +335,7 @@
}
if (i == 0) {
- boolean result = initStationMove(taskNo, currentStationId, taskNo, targetStationId, true, null);
+ boolean result = initStationMove(taskNo, currentStationId, currentStationDeviceNo, taskNo, targetStationId, true, null);
if (!result) {
continue;
}
@@ -325,7 +346,7 @@
}
if(nextStationId != null) {
- boolean result = stationMoveToNext(taskNo, currentStationId, nextStationId, taskNo, targetStationId);
+ boolean result = stationMoveToNext(taskNo, currentStationId, currentStationDeviceNo, nextStationId, nextStationDeviceNo, taskNo, targetStationId);
if (!result) {
continue;
}
@@ -346,7 +367,7 @@
if (Thread.currentThread().isInterrupted()) {
break;
}
- boolean result = generateStationBarcode(taskNo, targetStationId);
+ boolean result = generateStationBarcode(taskNo, targetStationId, targetStationDeviceNo);
sleep(1000);
if (!result) {
continue;
@@ -366,7 +387,7 @@
if (Thread.currentThread().isInterrupted()) {
break;
}
- boolean result = clearStation(taskNo, targetStationId);
+ boolean result = clearStation(taskNo, targetStationId, targetStationDeviceNo);
sleep(1000);
if (!result) {
continue;
@@ -408,8 +429,13 @@
return true;
}
- public synchronized boolean updateStationData(Integer lockTaskNo, Integer stationId, Integer taskNo, Integer targetStaNo, Boolean isLoading, String barcode, Boolean runBlock) {
+ public synchronized boolean updateStationData(Integer lockTaskNo, Integer stationId, Integer deviceNo, Integer taskNo, Integer targetStaNo, Boolean isLoading, String barcode, Boolean runBlock) {
if (LOCK_STATION != lockTaskNo) {
+ return false;
+ }
+
+ List<ZyStationStatusEntity> statusList = deviceStatusMap.get(deviceNo);
+ if (statusList == null) {
return false;
}
@@ -436,16 +462,21 @@
currentStatus.setBarcode(barcode);
}
- if(runBlock != null) {
+ if (runBlock != null) {
currentStatus.setRunBlock(runBlock);
}
return true;
}
- public synchronized boolean initStationMove(Integer lockTaskNo, Integer currentStationId, Integer taskNo, Integer targetStationId, Boolean isLoading, String barcode) {
+ public synchronized boolean initStationMove(Integer lockTaskNo, Integer currentStationId, Integer currentStationDeviceNo, Integer taskNo, Integer targetStationId, Boolean isLoading, String barcode) {
boolean executeResult = lockExecute(lockTaskNo, () -> {
+ List<ZyStationStatusEntity> statusList = deviceStatusMap.get(currentStationDeviceNo);
+ if (statusList == null) {
+ return false;
+ }
+
ZyStationStatusEntity currentStatus = statusList.stream()
- .filter(item -> item.getStationId().equals(currentStationId)).findFirst().orElse(null);
+ .filter(item -> item.getStationId().equals(currentStationId)).findFirst().orElse(null);
if (currentStatus == null) {
return false;
@@ -457,7 +488,7 @@
}
}
- boolean result = updateStationData(taskNo, currentStationId, taskNo, targetStationId, isLoading, barcode, false);
+ boolean result = updateStationData(lockTaskNo, currentStationId, currentStationDeviceNo, taskNo, targetStationId, isLoading, barcode, false);
if (!result) {
return false;
}
@@ -467,12 +498,22 @@
return executeResult;
}
- public synchronized boolean stationMoveToNext(Integer lockTaskNo, Integer currentStationId, Integer nextStationId, Integer taskNo, Integer targetStaNo) {
+ public synchronized boolean stationMoveToNext(Integer lockTaskNo, Integer currentStationId, Integer currentStationDeviceNo, Integer nextStationId, Integer nextStationDeviceNo, Integer taskNo, Integer targetStaNo) {
boolean executeResult = lockExecute(lockTaskNo, () -> {
+ List<ZyStationStatusEntity> statusList = deviceStatusMap.get(currentStationDeviceNo);
+ if (statusList == null) {
+ return false;
+ }
+
+ List<ZyStationStatusEntity> nextStatusList = deviceStatusMap.get(nextStationDeviceNo);
+ if (statusList == null) {
+ return false;
+ }
+
ZyStationStatusEntity currentStatus = statusList.stream()
.filter(item -> item.getStationId().equals(currentStationId)).findFirst().orElse(null);
- ZyStationStatusEntity nextStatus = statusList.stream()
+ ZyStationStatusEntity nextStatus = nextStatusList.stream()
.filter(item -> item.getStationId().equals(nextStationId)).findFirst().orElse(null);
if (currentStatus == null || nextStatus == null) {
@@ -483,12 +524,12 @@
return false;
}
- boolean result = updateStationData(lockTaskNo, nextStationId, taskNo, targetStaNo, true, null, false);
+ boolean result = updateStationData(lockTaskNo, nextStationId, nextStationDeviceNo, taskNo, targetStaNo, true, null, false);
if (!result) {
return false;
}
- boolean result2 = updateStationData(lockTaskNo, currentStationId, 0, 0, false, "", false);
+ boolean result2 = updateStationData(lockTaskNo, currentStationId, currentStationDeviceNo, 0, 0, false, "", false);
if (!result2) {
return false;
}
@@ -498,8 +539,13 @@
return executeResult;
}
- public synchronized boolean generateStationBarcode(Integer lockTaskNo, Integer currentStationId) {
+ public synchronized boolean generateStationBarcode(Integer lockTaskNo, Integer currentStationId, Integer currentStationDeviceNo) {
boolean executeResult = lockExecute(lockTaskNo, () -> {
+ List<ZyStationStatusEntity> statusList = deviceStatusMap.get(currentStationDeviceNo);
+ if (statusList == null) {
+ return false;
+ }
+
ZyStationStatusEntity currentStatus = statusList.stream()
.filter(item -> item.getStationId().equals(currentStationId)).findFirst().orElse(null);
@@ -510,7 +556,7 @@
String barcodeTime = String.valueOf(System.currentTimeMillis());
String barcode = barcodeTime.substring(5);
- boolean result = updateStationData(lockTaskNo, currentStationId, null, null, null, barcode, null);
+ boolean result = updateStationData(lockTaskNo, currentStationId, currentStationDeviceNo, null, null, null, barcode, null);
if (!result) {
return false;
}
@@ -520,8 +566,13 @@
return executeResult;
}
- public synchronized boolean clearStation(Integer lockTaskNo, Integer currentStationId) {
+ public synchronized boolean clearStation(Integer deviceNo, Integer lockTaskNo, Integer currentStationId) {
boolean executeResult = lockExecute(lockTaskNo, () -> {
+ List<ZyStationStatusEntity> statusList = deviceStatusMap.get(deviceNo);
+ if (statusList == null) {
+ return false;
+ }
+
ZyStationStatusEntity currentStatus = statusList.stream()
.filter(item -> item.getStationId().equals(currentStationId)).findFirst().orElse(null);
@@ -529,7 +580,7 @@
return false;
}
- boolean result = updateStationData(lockTaskNo, currentStationId, 0, 0, false, "", false);
+ boolean result = updateStationData(deviceNo, lockTaskNo, currentStationId, 0, 0, false, "", false);
if (!result) {
return false;
}
@@ -539,8 +590,13 @@
return executeResult;
}
- public synchronized boolean runBlockStation(Integer lockTaskNo, Integer currentStationId, Integer taskNo, Integer blockStationId) {
+ public synchronized boolean runBlockStation(Integer lockTaskNo, Integer currentStationId, Integer currentStationDeviceNo, Integer taskNo, Integer blockStationId) {
boolean executeResult = lockExecute(lockTaskNo, () -> {
+ List<ZyStationStatusEntity> statusList = deviceStatusMap.get(currentStationDeviceNo);
+ if (statusList == null) {
+ return false;
+ }
+
ZyStationStatusEntity currentStatus = statusList.stream()
.filter(item -> item.getStationId().equals(currentStationId)).findFirst().orElse(null);
@@ -548,7 +604,7 @@
return false;
}
- boolean result = updateStationData(lockTaskNo, currentStationId, taskNo, blockStationId, true, "", true);
+ boolean result = updateStationData(lockTaskNo, currentStationId, currentStationDeviceNo, taskNo, blockStationId, true, "", true);
if (!result) {
return false;
}
--
Gitblit v1.9.1