From ff86e3738197b49ed20910501e1fe3f356e2a6e0 Mon Sep 17 00:00:00 2001
From: cl <1442464845@qq.com>
Date: 星期五, 08 五月 2026 11:51:05 +0800
Subject: [PATCH] 重发优化
---
rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/RcsTvCallbackService.java | 61 +++++++++++++++++++++++++++---
1 files changed, 54 insertions(+), 7 deletions(-)
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/RcsTvCallbackService.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/RcsTvCallbackService.java
index e796aa6..e515c6e 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/RcsTvCallbackService.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/RcsTvCallbackService.java
@@ -10,6 +10,9 @@
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
+import java.time.Instant;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
@@ -64,7 +67,8 @@
continue;
}
if (StringUtils.hasText(staNo)) {
- parts.add("[" + staNo + "]" + msg);
+ // 鍏ㄨ鎷彿鍓嶇紑锛岄伩鍏嶇數瑙嗘満绔� Redis 鍊艰鍒�
+ parts.add("銆�" + staNo + "銆�" + msg);
} else {
parts.add(msg);
}
@@ -77,6 +81,38 @@
tvMonitorStringRedisTemplate.opsForValue().set(TvMonitorRedisKeys.TV_MANUAL_ERROR_MSG, value);
log.info("RCS 鎶ヨ宸插啓鍏� Redis tvManualErrorMsg锛屾潯鏁�={}", parts.size());
return rcsOk(value);
+ }
+
+ /** AGV 寮傚父鏁存鍐欏叆 tvManualErrorMsg锛屽悗娆¤鐩栧墠娆� */
+ public void publishAgvErrorToTv(JsonNode body) {
+ if (body == null || !body.isObject()) {
+ return;
+ }
+ String agvId = text(body.get("agvId"));
+ String faultName = text(body.get("faultName"));
+ String faultNo = text(body.get("faultNo"));
+ if ("undefined".equalsIgnoreCase(faultName)) {
+ faultName = "";
+ }
+ String prefix = StringUtils.hasText(agvId) ? ("銆怉GV" + agvId + "銆�") : "銆怉GV銆�";
+ String desc = StringUtils.hasText(faultName) ? faultName : "寮傚父";
+ StringBuilder sb = new StringBuilder(prefix).append(desc);
+ if (StringUtils.hasText(faultNo)) {
+ sb.append(" ").append(faultNo);
+ }
+ JsonNode tsNode = body.get("timestamp");
+ if (tsNode != null && tsNode.isNumber()) {
+ long ts = tsNode.asLong();
+ if (ts > 0) {
+ sb.append(" ")
+ .append(Instant.ofEpochMilli(ts)
+ .atZone(ZoneId.systemDefault())
+ .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+ }
+ }
+ String value = sb.toString();
+ tvMonitorStringRedisTemplate.opsForValue().set(TvMonitorRedisKeys.TV_MANUAL_ERROR_MSG, value);
+ log.info("AGV 鎶ヨ宸插啓鍏� Redis tvManualErrorMsg agvId={}", agvId);
}
private static JsonNode resolveErrorArray(JsonNode body) {
@@ -122,12 +158,7 @@
if (!StringUtils.hasText(staNo)) {
throw new IllegalArgumentException("staNo 涓嶈兘涓虹┖");
}
- if (!StringUtils.hasText(taskNo)) {
- tvMonitorStringRedisTemplate.opsForHash().delete(TvMonitorRedisKeys.TV_RCS_STATION_TASK_NO, staNo);
- } else {
- tvMonitorStringRedisTemplate.opsForHash()
- .put(TvMonitorRedisKeys.TV_RCS_STATION_TASK_NO, staNo, taskNo);
- }
+ writeStationTaskNo(staNo, taskNo);
log.info("RCS 浠诲姟鍙峰凡鍐欏叆 Redis Hash staNo={} taskNo={}", staNo, taskNo);
Map<String, Object> payload = new LinkedHashMap<>();
payload.put("staNo", staNo);
@@ -135,6 +166,22 @@
return rcsOk(payload);
}
+ /**
+ * 杞 RCS 绔欑偣浠诲姟鍙锋椂鍐欏叆 Redis锛屼笌 {@link #handleStationTaskNo} 涓� Hash 瑙勫垯涓�鑷�
+ */
+ public void writeStationTaskNo(String staNo, String taskNo) {
+ if (!StringUtils.hasText(staNo)) {
+ return;
+ }
+ String t = taskNo == null ? "" : taskNo.trim();
+ if (!StringUtils.hasText(t) || "0".equals(t)) {
+ tvMonitorStringRedisTemplate.opsForHash().delete(TvMonitorRedisKeys.TV_RCS_STATION_TASK_NO, staNo);
+ } else {
+ tvMonitorStringRedisTemplate.opsForHash()
+ .put(TvMonitorRedisKeys.TV_RCS_STATION_TASK_NO, staNo, t);
+ }
+ }
+
private Map<String, Object> rcsOk(Object data) {
Map<String, Object> m = new LinkedHashMap<>();
m.put("code", 200);
--
Gitblit v1.9.1