刘光辉
7 小时以前 06f314545ac3514d7ce28939920866ae8188d31c
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
package jnpf.tmsEntity.enums;
 
import jnpf.util.StringUtil;
 
import java.math.BigDecimal;
 
/**
 * 是否合格标记。
 * <p>字典:{@code tmsPassFlag};字段:{@code pass_flag} / {@code result_flag}</p>
 * <p>兼容历史读写:{@code 1}/{@code 0}、中文「合格/不合格」等。</p>
 */
public enum TmsPassFlag implements TmsDictEnum {
 
    /** 合格 */
    PASS("pass", "合格"),
    /** 不合格 */
    FAIL("fail", "不合格"),
    /** 未参加 */
    ABSENT("absent", "未参加"),
    /** 无需考核 */
    NA("na", "无需考核");
 
    private final String code;
    private final String label;
 
    TmsPassFlag(String code, String label) {
        this.code = code;
        this.label = label;
    }
 
    @Override
    public String getCode() {
        return code;
    }
 
    @Override
    public String getLabel() {
        return label;
    }
 
    public static TmsPassFlag of(String code) {
        return TmsDictEnum.of(TmsPassFlag.class, code);
    }
 
    /** 按分数与及格分判定合格/不合格;无及格分时返回 null */
    public static String ofScore(BigDecimal score, BigDecimal passScore) {
        if (passScore == null) {
            return null;
        }
        BigDecimal s = score == null ? BigDecimal.ZERO : score;
        return s.compareTo(passScore) >= 0 ? PASS.getCode() : FAIL.getCode();
    }
 
    /** 是否合格(含历史 1) */
    public static boolean isPass(String flag) {
        if (StringUtil.isEmpty(flag)) {
            return false;
        }
        String v = flag.trim().toLowerCase();
        return PASS.equalsCode(v) || "1".equals(v) || "true".equals(v) || "yes".equals(v) || "合格".equals(flag.trim());
    }
 
    /** 是否不合格(含历史 0) */
    public static boolean isFail(String flag) {
        if (StringUtil.isEmpty(flag)) {
            return false;
        }
        String v = flag.trim().toLowerCase();
        return FAIL.equalsCode(v) || "0".equals(v) || "false".equals(v) || "no".equals(v) || "不合格".equals(flag.trim());
    }
 
    /** 归一为字典编码;无法识别则原样返回(去空白) */
    public static String normalize(String flag) {
        if (StringUtil.isEmpty(flag)) {
            return null;
        }
        String raw = flag.trim();
        String v = raw.toLowerCase();
        if (PASS.equalsCode(v) || "1".equals(v) || "true".equals(v) || "yes".equals(v) || "合格".equals(raw)) {
            return PASS.getCode();
        }
        if (FAIL.equalsCode(v) || "0".equals(v) || "false".equals(v) || "no".equals(v) || "不合格".equals(raw)) {
            return FAIL.getCode();
        }
        if (ABSENT.equalsCode(v) || "未参加".equals(raw)) {
            return ABSENT.getCode();
        }
        if (NA.equalsCode(v) || "无需考核".equals(raw)) {
            return NA.getCode();
        }
        return raw;
    }
 
    /** 导出/展示用中文 */
    public static String label(String flag) {
        String n = normalize(flag);
        TmsPassFlag e = of(n);
        if (e != null) {
            return e.getLabel();
        }
        return StringUtil.isEmpty(flag) ? "" : flag;
    }
}