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;
|
}
|
}
|
}
|