yeg
4 天以前 65667e597b24c14624304a639bd883d3e2baa71f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package com.battery.device.api.model;
 
import java.util.Locale;
 
/**
 * 设备侧观测到的通道工作状态,是设备事实,独立于设备在线状态和测试接收状态。
 *
 * <p>落库前会归并为 RUNNING、PAUSED、ABNORMAL、ENDED、UNOBSERVABLE 五种,见业务层的通道状态映射。</p>
 */
public enum DeviceWorkStatus
{
    /** 设备运行中。*/
    WORKING,
    /** 设备通道已结束。*/
    FINISHED,
    /** 设备通道已停止。*/
    STOPPED,
    /** 设备保护动作触发。*/
    PROTECTED,
    /** 设备通道暂停。*/
    PAUSED,
    /** 设备同步控制中。*/
    SYNCHRONIZING,
    /** 设备指示灯状态。*/
    LIT,
    /** 设备等待超时。*/
    WAITING_TIMEOUT,
    /** 设备等待开始。*/
    WAITING_START,
    /** 设备通道锁定。*/
    LOCKED,
    /** 设备离线或请求失败时不得沿用上一次通道状态。 */
    UNOBSERVABLE,
    /** 协议返回无法识别的状态值。 */
    UNKNOWN;
 
    /** 将厂商协议状态文本映射为通道工作状态;无法识别的取值和 null 归为 UNKNOWN。 */
    public static DeviceWorkStatus fromBts(String value)
    {
        if (value == null) return UNKNOWN;
        return switch (value.trim().toLowerCase(Locale.ROOT))
        {
            case "working" -> WORKING;
            case "finish" -> FINISHED;
            case "stop" -> STOPPED;
            case "protect" -> PROTECTED;
            case "pause" -> PAUSED;
            case "synctrl" -> SYNCHRONIZING;
            case "ligth", "light" -> LIT;
            case "waittimeout" -> WAITING_TIMEOUT;
            case "waitstart" -> WAITING_START;
            case "lock" -> LOCKED;
            default -> UNKNOWN;
        };
    }
}