cl
5 天以前 ff86e3738197b49ed20910501e1fe3f356e2a6e0
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;
@@ -80,6 +83,38 @@
        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) ? ("【AGV" + agvId + "】") : "【AGV】";
        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) {
        if (body == null || body.isNull()) {
            return null;