package jnpf.tmsEntity.enums; import jnpf.util.StringUtil; import java.math.BigDecimal; /** * 是否合格标记。 *
字典:{@code tmsPassFlag};字段:{@code pass_flag} / {@code result_flag}
*兼容历史读写:{@code 1}/{@code 0}、中文「合格/不合格」等。
*/ 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; } }