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