package cn.iocoder.yudao.module.mes.enums.dv; import cn.iocoder.yudao.framework.common.core.ArrayValuable; import lombok.AllArgsConstructor; import lombok.Getter; import java.time.LocalDate; import java.time.temporal.ChronoUnit; import java.util.Arrays; /** * MES 计量器具到期状态枚举 * * @author 超级管理员 */ @Getter @AllArgsConstructor public enum MesDvMeteringExpireStatusEnum implements ArrayValuable { OVERDUE(1, "已过期"), WITHIN(2, "即将到期"), NORMAL(3, "正常"); public static final Integer[] ARRAYS = Arrays.stream(values()).map(MesDvMeteringExpireStatusEnum::getStatus).toArray(Integer[]::new); /** * 状态值 */ private final Integer status; /** * 状态名 */ private final String name; /** * 计算到期状态 * * @param nextCheckDate 下次检测日期(到期日) * @param remindDays 提前提醒天数 * @return 到期状态 */ public static Integer compute(LocalDate nextCheckDate, int remindDays) { if (nextCheckDate == null) { return NORMAL.getStatus(); } long days = ChronoUnit.DAYS.between(LocalDate.now(), nextCheckDate); if (days < 0) { return OVERDUE.getStatus(); } if (days <= remindDays) { return WITHIN.getStatus(); } return NORMAL.getStatus(); } @Override public Integer[] array() { return ARRAYS; } }