From 72355fd10ced5aedaa84f9b4696eb4ddd0268682 Mon Sep 17 00:00:00 2001
From: cl <1442464845@qq.com>
Date: 星期二, 28 四月 2026 16:15:21 +0800
Subject: [PATCH] 隐藏打印

---
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/tv/TvRcsStationPollService.java |  132 +++++++++++++++++++++++++++++++++++++++----
 1 files changed, 118 insertions(+), 14 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 36944ef..78657ff 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;
 
@@ -47,10 +48,7 @@
         String stationId = pollProperties.getTaskNoStationId();
         if (StringUtils.hasText(pollProperties.getTaskNoPollUrl())) {
             try {
-                String url = pollProperties.getTaskNoPollUrl();
-                log.info("RCS绔欑偣杞璇锋眰 GET /cv/station/getTaskNo url={}", url);
-                String raw = restTemplate.getForObject(url, String.class);
-                log.info("RCS绔欑偣杞鍝嶅簲 GET /cv/station/getTaskNo body={}", trimForLog(raw));
+                String raw = pollTaskNoRaw();
                 String taskNo = applyTaskNoResponse(raw, stationId);
                 enrichSnapshotFromWms(stationId, taskNo);
             } catch (RestClientException e) {
@@ -87,24 +85,49 @@
         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) {
@@ -124,25 +147,106 @@
     private String pollErrorRaw() throws Exception {
         String url = pollProperties.getErrorPollUrl();
         if (pollProperties.isErrorPollUsePost()) {
-            ObjectNode body = objectMapper.createObjectNode();
-            body.put("staNo", pollProperties.getErrorStationId());
-            String reqBody = objectMapper.writeValueAsString(body);
+            String reqBody = objectMapper.writeValueAsString(createStationBody(pollProperties.getErrorStationId()));
             HttpHeaders headers = new HttpHeaders();
             headers.setContentType(MediaType.APPLICATION_JSON);
             HttpEntity<String> entity = new HttpEntity<>(reqBody, headers);
-            log.info("RCS绔欑偣杞璇锋眰 POST /cv/station/getError url={} body={}", url, trimForLog(reqBody));
             ResponseEntity<String> resp = restTemplate.exchange(
                     url, HttpMethod.POST, entity, String.class);
             String respBody = resp.getBody();
-            log.info("RCS绔欑偣杞鍝嶅簲 POST /cv/station/getError body={}", trimForLog(respBody));
+            if (!shouldSkipInfoLogErrorPoll(respBody)) {
+                log.info("RCS绔欑偣杞璇锋眰 POST /cv/station/getError url={} body={}", url, trimForLog(reqBody));
+                log.info("RCS绔欑偣杞鍝嶅簲 POST /cv/station/getError body={}", trimForLog(respBody));
+            }
             return respBody;
         }
-        log.info("RCS绔欑偣杞璇锋眰 GET /cv/station/getError url={}", url);
         String raw = restTemplate.getForObject(url, String.class);
-        log.info("RCS绔欑偣杞鍝嶅簲 GET /cv/station/getError body={}", trimForLog(raw));
+        if (!shouldSkipInfoLogErrorPoll(raw)) {
+            log.info("RCS绔欑偣杞璇锋眰 GET /cv/station/getError url={}", url);
+            log.info("RCS绔欑偣杞鍝嶅簲 GET /cv/station/getError body={}", trimForLog(raw));
+        }
         return raw;
     }
 
+    private String pollTaskNoRaw() throws Exception {
+        String url = pollProperties.getTaskNoPollUrl();
+        if (pollProperties.isTaskNoPollUsePost()) {
+            String reqBody = objectMapper.writeValueAsString(createStationBody(pollProperties.getTaskNoStationId()));
+            HttpHeaders headers = new HttpHeaders();
+            headers.setContentType(MediaType.APPLICATION_JSON);
+            HttpEntity<String> entity = new HttpEntity<>(reqBody, headers);
+            ResponseEntity<String> resp = restTemplate.exchange(
+                    url, HttpMethod.POST, entity, String.class);
+            String respBody = resp.getBody();
+            if (!shouldSkipInfoLogTaskNoPoll(respBody)) {
+                log.info("RCS绔欑偣杞璇锋眰 POST /cv/station/getTaskNo url={} body={}", url, trimForLog(reqBody));
+                log.info("RCS绔欑偣杞鍝嶅簲 POST /cv/station/getTaskNo body={}", trimForLog(respBody));
+            }
+            return respBody;
+        }
+        String raw = restTemplate.getForObject(url, String.class);
+        if (!shouldSkipInfoLogTaskNoPoll(raw)) {
+            log.info("RCS绔欑偣杞璇锋眰 GET /cv/station/getTaskNo url={}", url);
+            log.info("RCS绔欑偣杞鍝嶅簲 GET /cv/station/getTaskNo body={}", trimForLog(raw));
+        }
+        return raw;
+    }
+
+    /** code=200 涓旀棤寮傚父鏄庣粏锛堝 data:[]锛夋椂涓嶆墦 INFO锛岄伩鍏嶅埛灞� */
+    private boolean shouldSkipInfoLogErrorPoll(String respBody) {
+        if (!StringUtils.hasText(respBody)) {
+            return true;
+        }
+        try {
+            JsonNode root = objectMapper.readTree(respBody.trim());
+            if (!httpSuccess(root)) {
+                return false;
+            }
+            JsonNode data = root.get("data");
+            if (data == null || data.isNull()) {
+                return true;
+            }
+            return data.isArray() && data.size() == 0;
+        } catch (Exception e) {
+            return false;
+        }
+    }
+
+    /** code=200 涓旀棤浠诲姟鍙风瓑闈炵┖涓氬姟鏁版嵁鏃朵笉鎵� INFO */
+    private boolean shouldSkipInfoLogTaskNoPoll(String respBody) {
+        if (!StringUtils.hasText(respBody)) {
+            return true;
+        }
+        try {
+            JsonNode root = objectMapper.readTree(respBody.trim());
+            if (!httpSuccess(root)) {
+                return false;
+            }
+            if (StringUtils.hasText(extractTaskNo(root))) {
+                return false;
+            }
+            JsonNode data = root.get("data");
+            if (data != null && !data.isNull()) {
+                if (data.isArray()) {
+                    return data.size() == 0;
+                }
+                return false;
+            }
+            return true;
+        } catch (Exception e) {
+            return false;
+        }
+    }
+
+    private ObjectNode createStationBody(String stationId) {
+        ObjectNode body = objectMapper.createObjectNode();
+        if (StringUtils.hasText(stationId)) {
+            body.put("stationId", stationId);
+            body.put("staNo", stationId);
+        }
+        return body;
+    }
+
     /** 鍐欏叆 tvRcs 浠诲姟鍙� Hash锛涜繑鍥炶В鏋愬嚭鐨� taskNo锛堢敤浜� WMS 鍚堝苟锛� */
     private String applyTaskNoResponse(String raw, String staNo) {
         if (!StringUtils.hasText(staNo)) {

--
Gitblit v1.9.1