|
|
|
|
@ -104,31 +104,49 @@ public class EquipVerificationServiceImpl extends BaseServiceImpl<EquipVerificat |
|
|
|
|
public void setVerificationState(List<EquipVerificationVO> list){ |
|
|
|
|
//遍历确定每件设备是否该检定了
|
|
|
|
|
list.forEach(e ->{ |
|
|
|
|
// //当前日期
|
|
|
|
|
// LocalDate localDate = LocalDate.now();
|
|
|
|
|
// LocalDateTime enableTime = e.getEnableTime();
|
|
|
|
|
// //设备启用日期
|
|
|
|
|
// LocalDate enableDate = LocalDate.of(enableTime.getYear(), enableTime.getMonthValue(), enableTime.getDayOfMonth());
|
|
|
|
|
// //当前日期 - 设备启用日期 = 设备启用的天数
|
|
|
|
|
// long between = ChronoUnit.DAYS.between(enableDate, localDate);
|
|
|
|
|
// //设备启用天数 / 设备检定周期 = 经过的检定周期数
|
|
|
|
|
// long circle = between / e.getCycle();
|
|
|
|
|
// //经过的检定周期数 * 设备检定周期 = 设备经过的完整检定天数
|
|
|
|
|
// long day01 = circle * e.getCycle();
|
|
|
|
|
// //设备启用日期 + day01 = 上个检定周期的结束时间
|
|
|
|
|
// LocalDate lastVeriDay = enableDate.plus(day01, ChronoUnit.DAYS);
|
|
|
|
|
// //当前日期 - 上个检定周期的结束时间 = day02
|
|
|
|
|
// long day02 = ChronoUnit.DAYS.between(lastVeriDay, localDate);
|
|
|
|
|
// //设备的检定周期 - day02 = 当前日期距本次检定周期结束日的时间差 day03
|
|
|
|
|
// long day03 = e.getCycle() - day02;
|
|
|
|
|
// //day03 - 提前通知的时间 = day04
|
|
|
|
|
// long day04 = day03 - e.getWarnBefore();
|
|
|
|
|
//
|
|
|
|
|
// if(day04 <= 0){ //进入应检提醒日期内
|
|
|
|
|
// e.setStatus(0); //0表示该检定了
|
|
|
|
|
// }else{
|
|
|
|
|
// e.setStatus(1); //1表示无需检定
|
|
|
|
|
// }
|
|
|
|
|
//当前日期
|
|
|
|
|
LocalDate localDate = LocalDate.now(); |
|
|
|
|
LocalDateTime enableTime = e.getEnableTime(); |
|
|
|
|
//设备启用日期
|
|
|
|
|
LocalDate enableDate = LocalDate.of(enableTime.getYear(), enableTime.getMonthValue(), enableTime.getDayOfMonth()); |
|
|
|
|
//当前日期 - 设备启用日期 = 设备启用的天数
|
|
|
|
|
long between = ChronoUnit.DAYS.between(enableDate, localDate); |
|
|
|
|
//设备启用天数 / 设备检定周期 = 经过的检定周期数
|
|
|
|
|
long circle = between / e.getCycle(); |
|
|
|
|
//经过的检定周期数 * 设备检定周期 = 设备经过的完整检定天数
|
|
|
|
|
long day01 = circle * e.getCycle(); |
|
|
|
|
//设备启用日期 + day01 = 上个检定周期的结束时间
|
|
|
|
|
LocalDate lastVeriDay = enableDate.plus(day01, ChronoUnit.DAYS); |
|
|
|
|
//当前日期 - 上个检定周期的结束时间 = day02
|
|
|
|
|
long day02 = ChronoUnit.DAYS.between(lastVeriDay, localDate); |
|
|
|
|
//设备的检定周期 - day02 = 当前日期距本次检定周期结束日的时间差 day03
|
|
|
|
|
long day03 = e.getCycle() - day02; |
|
|
|
|
//day03 - 提前通知的时间 = day04
|
|
|
|
|
long day04 = day03 - e.getWarnBefore(); |
|
|
|
|
LocalDate now = LocalDate.now(); |
|
|
|
|
LocalDateTime lastVerificationTime = e.getLastVerificationTime() == null ? e.getEnableTime() : e.getLastVerificationTime(); |
|
|
|
|
//上次检定日期
|
|
|
|
|
LocalDate lastVerificationDay =lastVerificationTime.toLocalDate(); |
|
|
|
|
|
|
|
|
|
if(day04 <= 0){ //进入应检提醒日期内
|
|
|
|
|
e.setStatus(0); //0表示该检定了
|
|
|
|
|
}else{ |
|
|
|
|
e.setStatus(1); //1表示无需检定
|
|
|
|
|
} |
|
|
|
|
if(ChronoUnit.DAYS.between(lastVerificationDay, now) >= 0){ //只有当前日期 > = 上次检定日期
|
|
|
|
|
long between = ChronoUnit.DAYS.between(lastVerificationDay, now); |
|
|
|
|
Integer cycle = e.getCycle(); |
|
|
|
|
|
|
|
|
|
if ((between / cycle) >= 1 ){ //说明超过一轮未检测了
|
|
|
|
|
e.setStatus(0); |
|
|
|
|
}else if((between % cycle) < (cycle - e.getWarnBefore())){ //说明未到下一个预检周期
|
|
|
|
|
e.setStatus(1); |
|
|
|
|
}else if((between % cycle) >= (cycle - e.getWarnBefore())){ //说明到下一个预检周期的提醒时间内了,也要设为未检查
|
|
|
|
|
e.setStatus(0); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|