刘光辉
昨天 bb638871a7fb692d80f1b7a758f991dc0879002c
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
package jnpf.limsService.support;
 
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Locale;
import java.util.Set;
 
/**
 * 水系统趋势读模型的无状态转换规则。
 */
public final class LimsSxtQushiTrendSupport {
 
    private static final Set<String> NON_TREND_ITEM_NAMES = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(
            "性状", "氨", "硝酸盐", "亚硝酸盐", "内毒素检查", "重金属"
    )));
 
    private LimsSxtQushiTrendSupport() {
    }
 
    public static boolean isTrendEnabled(String itemName) {
        return isTrendEnabled(itemName, null);
    }
 
    public static boolean isTrendEnabled(String itemName, String shujuLeixing) {
        if (itemName == null || NON_TREND_ITEM_NAMES.contains(itemName.trim())) {
            return false;
        }
        if (shujuLeixing == null || shujuLeixing.trim().isEmpty()) {
            return true;
        }
        String normalized = shujuLeixing.trim().toLowerCase(Locale.ROOT);
        return !(normalized.contains("文本")
                || normalized.contains("字符")
                || normalized.contains("定性")
                || normalized.contains("枚举")
                || normalized.contains("布尔")
                || normalized.contains("选项")
                || normalized.contains("日期")
                || normalized.contains("时间")
                || normalized.contains("文件")
                || normalized.contains("string")
                || normalized.contains("text")
                || normalized.contains("textarea")
                || normalized.contains("select")
                || normalized.contains("radio")
                || normalized.contains("checkbox")
                || normalized.contains("boolean")
                || normalized.contains("date")
                || normalized.contains("time")
                || normalized.contains("file"));
    }
 
    public static BigDecimal toNumericOrNull(String value) {
        if (value == null) {
            return null;
        }
        String normalized = value.trim();
        if (normalized.isEmpty()
                || "N/A".equalsIgnoreCase(normalized)
                || "NA".equalsIgnoreCase(normalized)
                || "-".equals(normalized)
                || "--".equals(normalized)) {
            return null;
        }
        try {
            return new BigDecimal(normalized);
        } catch (NumberFormatException e) {
            return null;
        }
    }
}