7 小时以前 9bad721754fe8bbe2e5f459d0706e0fefac569f3
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
package cn.iocoder.yudao.module.qcreport.engine;
 
/**
 * 判定结果。
 * <p>
 * 与前端 {@code engine/context.ts} 的 QUALITY_RESULT 一一对应,取值同时是
 * {@code QcReportEnums.CheckResultEnum} 的落库值。
 */
public enum QualityResult {
 
    PASS("合格"),
    FAIL("不合格");
 
    /**
     * 规则本身出错时的占位文案。
     * <p>
     * 没验过不能说合格,没证据也不能说不合格,所以「无结论」必须是一个和 PASS/FAIL 并列的显式状态。
     * 这类项仍留在合格率分母里,一个跑挂的规则应该把合格结论压住。
     */
    public static final String PENDING_TEXT = "待判定";
 
    /**
     * 既没有规则、也没有规格上下限时的占位文案。
     * <p>
     * 和 {@link #PENDING_TEXT} 刻意分开:报告里常有「试样质量 m」「称量瓶 m0」这类只供公式取数的过程参数,
     * 它们没有规格也就无从判定;这类项不计入合格率分母,也不参与报告结论。
     */
    public static final String UNDECIDABLE_TEXT = "无判定规则";
 
    /** 判定结果对应的展示文字 */
    private final String text;
 
    QualityResult(String text) {
        this.text = text;
    }
 
    public String text() {
        return text;
    }
 
    /** 展示文字/落库值 → 枚举,识别不出返回 null */
    public static QualityResult of(String value) {
        if (value == null) {
            return null;
        }
        String normalized = value.trim().toUpperCase();
        for (QualityResult result : values()) {
            if (result.name().equals(normalized)) {
                return result;
            }
        }
        return null;
    }
 
}