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