jiazx0107@163.com
2023-05-17 620eab6cca2bc9ef9ea6d3067a0a5ba1deadbd1c
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
package com.ld.igds.constant;
 
/**
 * 设备状态枚举
 */
public enum DeviceStatus {
 
    // 默认类
    CLOSE("CLOSE", "关闭"), OPEN("OPEN", "打开"),
 
    // 风机类设备状态
    W_CLOSE("W_CLOSE", "风口关"), W_OPEN("W_OPEN", "风口开"), F_OPEN("F_OPEN", "风机正转"), F_OPEN_F(
            "F_OPEN_F", "风机反转"), F_CLOSE("F_CLOSE", "风机关"), ERROR("ERROR", "故障"), ZERO(
            "ZERO", "无操作");
 
    private String code;
    private String msg;
 
    DeviceStatus(String code, String msg) {
        this.code = code;
        this.msg = msg;
    }
 
    public String getCode() {
        return code;
    }
 
    public String getMsg() {
        return msg;
    }
 
    public static String getDeviceStatus(String code) {
        if (null == code)
            return "";
 
        if (DeviceStatus.CLOSE.getCode().equals(code)) {
            return DeviceStatus.CLOSE.getMsg();
        }
        if (DeviceStatus.F_CLOSE.getCode().equals(code)) {
            return DeviceStatus.F_CLOSE.getMsg();
        }
 
        if (DeviceStatus.F_OPEN.getCode().equals(code)) {
            return DeviceStatus.F_OPEN.getMsg();
        }
        if (DeviceStatus.OPEN.getCode().equals(code)) {
            return DeviceStatus.OPEN.getMsg();
        }
 
        if (DeviceStatus.W_CLOSE.getCode().equals(code)) {
            return DeviceStatus.W_CLOSE.getMsg();
        }
 
        if (DeviceStatus.W_OPEN.getCode().equals(code)) {
            return DeviceStatus.W_OPEN.getMsg();
        }
 
        return "";
    }
 
    /**
     * 根据当前通道状态和关联状态获取实际的设备状态
     * 
     * @param status
     * @param linkStatus
     * @param deviceType
     * @return
     */
    public static String getStatus(String status, String linkStatus,
            String deviceType) {
        if (null == status || Constant.EMPTY.equalsIgnoreCase(status))
            status = ERROR.code;
        
        if(null == linkStatus) linkStatus = Constant.EMPTY;
 
        // if (null == linkStatus ||
        // Constant.EMPTY.equalsIgnoreCase(linkStatus)){
        // linkStatus = ERROR.code;
        // }
        
        //只有轴流风机和混流风机才考虑关联设备,其他忽略关联
        if(!DeviceType.TYPE_0C.getCode().equals(deviceType) && !DeviceType.TYPE_02.getCode().equals(deviceType)){
            linkStatus = null;
        }
 
        if (ERROR.code.equals(status) && OPEN.getCode().equals(linkStatus)) {
            return W_OPEN.getCode();
        }
        if (ERROR.code.equals(status) && CLOSE.getCode().equals(linkStatus)) {
            return W_CLOSE.getCode();
        }
        // 风机类的设备处理
        // 风机关 窗口 开
        if (F_CLOSE.getCode().equals(status)
                && OPEN.getCode().equals(linkStatus)) {
            return W_OPEN.getCode();
        }
 
        // 风机关 窗口关
        if (F_CLOSE.getCode().equals(status)
                && CLOSE.getCode().equals(linkStatus)) {
            return W_CLOSE.getCode();
        }
 
        // 风机开 窗口开
        if (F_OPEN.getCode().equals(status)
                && OPEN.getCode().equals(linkStatus)) {
            return F_OPEN.getCode();
        }
        // 风机开 窗口关
//        if (F_OPEN.getCode().equals(status)
//                && CLOSE.getCode().equals(linkStatus)) {
//            return ERROR.getCode();
//        }
        if (F_OPEN.getCode().equals(status)) {
            return F_OPEN.getCode();
        }
 
        // 风机反开 窗口开
        if (F_OPEN_F.getCode().equals(status)
                && OPEN.getCode().equals(linkStatus)) {
            return F_OPEN_F.getCode();
        }
 
        // 风机反开 窗口关
//        if (F_OPEN_F.getCode().equals(status)
//                && CLOSE.getCode().equals(linkStatus)) {
//            return ERROR.getCode();
//        }
        if (F_OPEN_F.getCode().equals(status)) {
            return F_OPEN_F.getCode();
        }
 
        return status;
    }
 
}