diff --git a/viewsh-module-iot/viewsh-module-iot-server/src/main/java/com/viewsh/module/iot/dal/redis/clean/BadgeDeviceStatusRedisDAO.java b/viewsh-module-iot/viewsh-module-iot-server/src/main/java/com/viewsh/module/iot/dal/redis/clean/BadgeDeviceStatusRedisDAO.java
new file mode 100644
index 0000000..4715c02
--- /dev/null
+++ b/viewsh-module-iot/viewsh-module-iot-server/src/main/java/com/viewsh/module/iot/dal/redis/clean/BadgeDeviceStatusRedisDAO.java
@@ -0,0 +1,152 @@
+package com.viewsh.module.iot.dal.redis.clean;
+
+import jakarta.annotation.Resource;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.stereotype.Repository;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * 工牌设备状态 Redis DAO(只读)
+ *
+ * 从 Redis 读取由 Ops 模块写入的工牌设备状态信息
+ * Key: ops:badge:status:{deviceId}
+ * 数据结构: Hash
+ *
+ * IoT 模块只读取此数据,��操作由 Ops 模块的 BadgeDeviceStatusService 处理
+ *
+ * @author AI
+ */
+@Repository
+public class BadgeDeviceStatusRedisDAO {
+
+ /**
+ * 工牌状态 Key 模式
+ *
+ * 格式:ops:badge:status:{deviceId}
+ */
+ private static final String BADGE_STATUS_KEY_PATTERN = "ops:badge:status:%s";
+
+ @Resource
+ private StringRedisTemplate stringRedisTemplate;
+
+ /**
+ * 获取设备当前工单信息
+ *
+ * @param deviceId 设备ID
+ * @return 工单信息,如果不存在返回 null
+ */
+ public OrderInfo getCurrentOrder(Long deviceId) {
+ String key = formatKey(deviceId);
+ Map