From ecb51654e5224950f1fe8d139190d1c1a8daebca Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 23 三月 2026 22:46:39 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/thread/impl/ZyStationV5Thread.java | 1
src/main/java/com/zy/core/utils/StationOperateProcessUtils.java | 27 +++++++++++++
src/main/java/com/zy/asrs/controller/ConsoleController.java | 1
src/main/java/com/zy/asrs/domain/vo/StationLatestDataVo.java | 6 +++
src/main/java/com/zy/core/model/protocol/StationProtocol.java | 4 ++
src/main/java/com/zy/core/network/entity/ZyStationStatusEntity.java | 6 +++
src/main/java/com/zy/core/thread/impl/ZyStationV4Thread.java | 1
src/main/webapp/components/DevpCard.js | 15 +++++++
src/main/java/com/zy/core/model/protocol/StationTaskBufferItem.java | 16 ++++++++
src/main/java/com/zy/core/network/real/ZyStationV4RealConnect.java | 24 ++++++++++++
10 files changed, 101 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/ConsoleController.java b/src/main/java/com/zy/asrs/controller/ConsoleController.java
index 68877f8..5a5f0c4 100644
--- a/src/main/java/com/zy/asrs/controller/ConsoleController.java
+++ b/src/main/java/com/zy/asrs/controller/ConsoleController.java
@@ -136,6 +136,7 @@
vo.setSystemWarning(stationProtocol.getSystemWarning()); // 绯荤粺鍛婅/涓氬姟鎻愮ず
vo.setWeight(stationProtocol.getWeight());//閲嶉噺
vo.setTaskWriteIdx(stationProtocol.getTaskWriteIdx());//浠诲姟鍙啓鍖�
+ vo.setTaskBufferItems(stationProtocol.getTaskBufferItems());//浠诲姟缂撳瓨鍖烘暟鎹�
String stationStatus = StationStatusType.process(stationProtocol).toString().toLowerCase().replaceAll("_", "-");
if (stationProtocol.isAutoing() && stationProtocol.isLoading() && stationProtocol.getTaskNo() > 0 && !stationProtocol.isRunBlock()) {
String taskClass = getStationTaskClass(stationProtocol.getTaskNo(), inTaskRange, outTaskRange);
diff --git a/src/main/java/com/zy/asrs/domain/vo/StationLatestDataVo.java b/src/main/java/com/zy/asrs/domain/vo/StationLatestDataVo.java
index 84967b0..b3ec94c 100644
--- a/src/main/java/com/zy/asrs/domain/vo/StationLatestDataVo.java
+++ b/src/main/java/com/zy/asrs/domain/vo/StationLatestDataVo.java
@@ -1,6 +1,9 @@
package com.zy.asrs.domain.vo;
+import com.zy.core.model.protocol.StationTaskBufferItem;
import lombok.Data;
+
+import java.util.List;
@Data
public class StationLatestDataVo {
@@ -61,4 +64,7 @@
//浠诲姟鍙啓鍖�
private Integer taskWriteIdx;
+ //浠诲姟缂撳瓨鍖烘Ы浣嶈鎯�
+ private List<StationTaskBufferItem> taskBufferItems;
+
}
diff --git a/src/main/java/com/zy/core/model/protocol/StationProtocol.java b/src/main/java/com/zy/core/model/protocol/StationProtocol.java
index d3406d8..7d4838b 100644
--- a/src/main/java/com/zy/core/model/protocol/StationProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/StationProtocol.java
@@ -5,6 +5,7 @@
import com.zy.asrs.service.WrkMastService;
import lombok.Data;
+import java.util.List;
import java.util.Map;
@Data
@@ -67,6 +68,9 @@
//浠诲姟鍙啓鍖�
private Integer taskWriteIdx;
+ //浠诲姟缂撳瓨鍖烘Ы浣嶈鎯�
+ private List<StationTaskBufferItem> taskBufferItems;
+
/**
* 鎵╁睍鏁版嵁
*/
diff --git a/src/main/java/com/zy/core/model/protocol/StationTaskBufferItem.java b/src/main/java/com/zy/core/model/protocol/StationTaskBufferItem.java
new file mode 100644
index 0000000..365ca8f
--- /dev/null
+++ b/src/main/java/com/zy/core/model/protocol/StationTaskBufferItem.java
@@ -0,0 +1,16 @@
+package com.zy.core.model.protocol;
+
+import lombok.Data;
+
+@Data
+public class StationTaskBufferItem {
+
+ // 浠诲姟缂撳瓨鍖烘Ы浣嶏紝浠� 1 寮�濮�
+ private Integer slotIdx;
+
+ // 缂撳瓨鍖轰换鍔″彿
+ private Integer taskNo;
+
+ // 缂撳瓨鍖虹洰鏍囩珯
+ private Integer targetStaNo;
+}
diff --git a/src/main/java/com/zy/core/network/entity/ZyStationStatusEntity.java b/src/main/java/com/zy/core/network/entity/ZyStationStatusEntity.java
index caf2695..fed4b4f 100644
--- a/src/main/java/com/zy/core/network/entity/ZyStationStatusEntity.java
+++ b/src/main/java/com/zy/core/network/entity/ZyStationStatusEntity.java
@@ -1,6 +1,9 @@
package com.zy.core.network.entity;
+import com.zy.core.model.protocol.StationTaskBufferItem;
import lombok.Data;
+
+import java.util.List;
@Data
public class ZyStationStatusEntity {
@@ -53,6 +56,9 @@
//浠诲姟鍙啓鍖�
private Integer taskWriteIdx;
+ //浠诲姟缂撳瓨鍖烘Ы浣嶈鎯�
+ private List<StationTaskBufferItem> taskBufferItems;
+
//杩愯鍫靛
private boolean runBlock = false;
diff --git a/src/main/java/com/zy/core/network/real/ZyStationV4RealConnect.java b/src/main/java/com/zy/core/network/real/ZyStationV4RealConnect.java
index 82f8963..2819723 100644
--- a/src/main/java/com/zy/core/network/real/ZyStationV4RealConnect.java
+++ b/src/main/java/com/zy/core/network/real/ZyStationV4RealConnect.java
@@ -18,11 +18,13 @@
import com.zy.core.model.CommandResponse;
import com.zy.core.model.StationObjModel;
import com.zy.core.model.command.StationCommand;
+import com.zy.core.model.protocol.StationTaskBufferItem;
import com.zy.core.network.api.ZyStationConnectApi;
import com.zy.core.network.entity.ZyStationStatusEntity;
import lombok.extern.slf4j.Slf4j;
import java.text.MessageFormat;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
@@ -137,6 +139,7 @@
statusEntity.setError(0);//榛樿鏃犳姤璀�
statusEntity.setTaskWriteIdx((int) siemensNet.getByteTransform().TransInt16(result.Content, i * 10 + 8));//浠诲姟鍙啓鍖�
+ fillTaskBufferStatus(i, statusEntity);
}
}
@@ -386,6 +389,27 @@
return null;
}
+ private void fillTaskBufferStatus(int stationIdx, ZyStationStatusEntity statusEntity) {
+ if (statusEntity == null || stationIdx < 0) {
+ return;
+ }
+ List<StationTaskBufferItem> itemList = new ArrayList<>();
+ OperateResultExOne<byte[]> resultTask = siemensNet.Read("DB13." + (stationIdx * TASK_AREA_LENGTH), (short) TASK_AREA_LENGTH);
+ if (resultTask.IsSuccess && resultTask.Content != null) {
+ for (int slotIdx = 1; slotIdx <= TASK_AREA_SLOT_COUNT; slotIdx++) {
+ int offset = slotIdx * TASK_AREA_SLOT_SIZE;
+ int taskNo = siemensNet.getByteTransform().TransInt32(resultTask.Content, offset);
+ int targetPoint = siemensNet.getByteTransform().TransInt16(resultTask.Content, offset + 6);
+ StationTaskBufferItem item = new StationTaskBufferItem();
+ item.setSlotIdx(slotIdx);
+ item.setTaskNo(taskNo);
+ item.setTargetStaNo(targetPoint);
+ itemList.add(item);
+ }
+ }
+ statusEntity.setTaskBufferItems(itemList);
+ }
+
private int findIndex(Integer stationId) {
for (int i = 0; i < statusList.size(); i++) {
ZyStationStatusEntity statusEntity = statusList.get(i);
diff --git a/src/main/java/com/zy/core/thread/impl/ZyStationV4Thread.java b/src/main/java/com/zy/core/thread/impl/ZyStationV4Thread.java
index 064b5cd..07a220a 100644
--- a/src/main/java/com/zy/core/thread/impl/ZyStationV4Thread.java
+++ b/src/main/java/com/zy/core/thread/impl/ZyStationV4Thread.java
@@ -153,6 +153,7 @@
stationProtocol.setEnableIn(statusEntity.isEnableIn());
stationProtocol.setWeight(statusEntity.getWeight());
stationProtocol.setTaskWriteIdx(statusEntity.getTaskWriteIdx());
+ stationProtocol.setTaskBufferItems(statusEntity.getTaskBufferItems());
}
if (!Cools.isEmpty(stationProtocol.getSystemWarning())) {
diff --git a/src/main/java/com/zy/core/thread/impl/ZyStationV5Thread.java b/src/main/java/com/zy/core/thread/impl/ZyStationV5Thread.java
index ca34f74..69345d9 100644
--- a/src/main/java/com/zy/core/thread/impl/ZyStationV5Thread.java
+++ b/src/main/java/com/zy/core/thread/impl/ZyStationV5Thread.java
@@ -171,6 +171,7 @@
stationProtocol.setEnableIn(statusEntity.isEnableIn());
stationProtocol.setWeight(statusEntity.getWeight());
stationProtocol.setTaskWriteIdx(statusEntity.getTaskWriteIdx());
+ stationProtocol.setTaskBufferItems(statusEntity.getTaskBufferItems());
}
if (!Cools.isEmpty(stationProtocol.getSystemWarning())) {
diff --git a/src/main/java/com/zy/core/utils/StationOperateProcessUtils.java b/src/main/java/com/zy/core/utils/StationOperateProcessUtils.java
index f988dd1..dced1e1 100644
--- a/src/main/java/com/zy/core/utils/StationOperateProcessUtils.java
+++ b/src/main/java/com/zy/core/utils/StationOperateProcessUtils.java
@@ -27,6 +27,7 @@
import com.zy.core.model.Task;
import com.zy.core.model.command.StationCommand;
import com.zy.core.model.protocol.StationProtocol;
+import com.zy.core.model.protocol.StationTaskBufferItem;
import com.zy.core.service.StationTaskLoopService;
import com.zy.core.thread.StationThread;
import org.springframework.beans.factory.annotation.Autowired;
@@ -1312,6 +1313,14 @@
if (lock != null) {
return;
}
+ int taskBufferCommandCount = countTaskBufferCommands(stationProtocol.getTaskBufferItems());
+ if (taskBufferCommandCount > 0) {
+ News.info("杈撻�佺珯鐐逛换鍔″仠鐣欒秴鏃讹紝浣嗙紦瀛樺尯浠嶆湁鍛戒护锛屽凡璺宠繃閲嶇畻銆傜珯鐐瑰彿={}锛屽伐浣滃彿={}锛岀紦瀛樺懡浠ゆ暟={}",
+ stationProtocol.getStationId(),
+ stationProtocol.getTaskNo(),
+ taskBufferCommandCount);
+ return;
+ }
Double pathLenFactor = resolveOutboundPathLenFactor(wrkMast);
OutOrderDispatchDecision dispatchDecision = null;
@@ -1375,6 +1384,24 @@
redisUtil.del(key);
}
+ private int countTaskBufferCommands(List<StationTaskBufferItem> taskBufferItems) {
+ if (taskBufferItems == null || taskBufferItems.isEmpty()) {
+ return 0;
+ }
+ int count = 0;
+ for (StationTaskBufferItem item : taskBufferItems) {
+ if (item == null) {
+ continue;
+ }
+ Integer taskNo = item.getTaskNo();
+ Integer targetStaNo = item.getTargetStaNo();
+ if ((taskNo != null && taskNo != 0) || (targetStaNo != null && targetStaNo != 0)) {
+ count++;
+ }
+ }
+ return count;
+ }
+
private int clearIssuedMoveCommandsDuringIdleStay(StationTaskIdleTrack idleTrack,
Integer taskNo,
Integer stationId) {
diff --git a/src/main/webapp/components/DevpCard.js b/src/main/webapp/components/DevpCard.js
index b55e1d4..118fcdb 100644
--- a/src/main/webapp/components/DevpCard.js
+++ b/src/main/webapp/components/DevpCard.js
@@ -275,12 +275,27 @@
{ label: "鏉$爜", value: this.orDash(item.barcode), code: true, type: "barcode" },
{ label: "閲嶉噺", value: this.orDash(item.weight) },
{ label: "浠诲姟鍙啓鍖�", value: this.orDash(item.taskWriteIdx) },
+ { label: "缂撳瓨鍖烘暟鎹�", value: this.formatTaskBufferItems(item.taskBufferItems), code: true },
{ label: "鏁呴殰浠g爜", value: this.orDash(item.error) },
{ label: "鏁呴殰淇℃伅", value: this.orDash(item.errorMsg) },
{ label: "绯荤粺鍛婅", value: this.orDash(item.systemWarning) },
{ label: "鎵╁睍鏁版嵁", value: this.orDash(item.extend) }
];
},
+ formatTaskBufferItems: function (items) {
+ if (!Array.isArray(items) || items.length === 0) {
+ return "--";
+ }
+ return items.map(function (item) {
+ var slotIdx = item && item.slotIdx != null ? item.slotIdx : "?";
+ var taskNo = item && item.taskNo != null ? item.taskNo : 0;
+ var targetStaNo = item && item.targetStaNo != null ? item.targetStaNo : 0;
+ if (!taskNo && !targetStaNo) {
+ return slotIdx + ": 绌�";
+ }
+ return slotIdx + ": " + taskNo + " -> " + targetStaNo;
+ }).join(" | ");
+ },
postControl: function (url, payload) {
$.ajax({
url: baseUrl + url,
--
Gitblit v1.9.1