From f66b6a060100d8e117df8c01dc9416b37b474497 Mon Sep 17 00:00:00 2001
From: cl <1442464845@qq.com>
Date: 星期四, 16 四月 2026 18:15:49 +0800
Subject: [PATCH] 站点信号消失

---
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/tv/TvRcsStationPollService.java |   32 +++++++++++++++++++++++++++++---
 1 files changed, 29 insertions(+), 3 deletions(-)

diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/tv/TvRcsStationPollService.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/tv/TvRcsStationPollService.java
index 59f95ab..a7493c3 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/tv/TvRcsStationPollService.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/tv/TvRcsStationPollService.java
@@ -19,6 +19,7 @@
 import org.springframework.web.client.RestTemplate;
 
 import javax.annotation.Resource;
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -84,26 +85,51 @@
         try {
             Map<String, Object> res = wmsServerFeignClient.openAsrsQueryTask(req);
             if (res == null) {
-                wcsStationStatusService.upsertFromRcsPoll(stationId, taskNo, null);
+//                wcsStationStatusService.upsertFromRcsPoll(stationId, taskNo, null);
+                wcsStationStatusService.clearStationSnapshot(stationId);
                 return;
             }
             Object codeObj = res.get("code");
             int code = parseCode(codeObj);
             if (code != 200) {
                 log.debug("WMS queryTask 闈炴垚鍔� code={} msg={}", code, res.get("msg"));
-                wcsStationStatusService.upsertFromRcsPoll(stationId, taskNo, null);
+//                wcsStationStatusService.upsertFromRcsPoll(stationId, taskNo, null);
+                wcsStationStatusService.clearStationSnapshot(stationId);
                 return;
             }
             Object data = res.get("data");
             @SuppressWarnings("unchecked")
             Map<String, Object> dataMap = data instanceof Map ? (Map<String, Object>) data : null;
+            if (dataMap == null || !hasWrkDetls(dataMap)) {
+                // queryTask 绌烘暟鎹椂娓呯┖绔欑偣缂撳瓨锛岄伩鍏嶇數瑙嗘満鏄剧ず鍘嗗彶鐗╂枡
+                wcsStationStatusService.clearStationSnapshot(stationId);
+                return;
+            }
             wcsStationStatusService.upsertFromRcsPoll(stationId, taskNo, dataMap);
         } catch (Exception e) {
             log.warn("WMS queryTask 璋冪敤澶辫触: {}", e.getMessage());
-            wcsStationStatusService.upsertFromRcsPoll(stationId, taskNo, null);
+//            wcsStationStatusService.upsertFromRcsPoll(stationId, taskNo, null);
+            wcsStationStatusService.clearStationSnapshot(stationId);
         }
     }
 
+    private static boolean hasWrkDetls(Map<String, Object> dataMap) {
+        if (dataMap == null) {
+            return false;
+        }
+        Object wrkDetls = dataMap.get("wrkDetls");
+        if (wrkDetls == null) {
+            return false;
+        }
+        if (wrkDetls instanceof Collection) {
+            return !((Collection<?>) wrkDetls).isEmpty();
+        }
+        if (wrkDetls.getClass().isArray()) {
+            return java.lang.reflect.Array.getLength(wrkDetls) > 0;
+        }
+        return true;
+    }
+
     private static int parseCode(Object codeObj) {
         if (codeObj == null) {
             return 0;

--
Gitblit v1.9.1