cl
2026-04-16 8645387c6c7850d71bd2ac87407da9440d518cc8
rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/RcsTvCallbackService.java
@@ -64,7 +64,8 @@
                continue;
            }
            if (StringUtils.hasText(staNo)) {
                parts.add("[" + staNo + "]" + msg);
                // 全角括号前缀,避免电视机端 Redis 值误判
                parts.add("【" + staNo + "】" + msg);
            } else {
                parts.add(msg);
            }
@@ -122,12 +123,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 +131,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);