继续修改设备检定的代码

dev
yitonglei 3 years ago
parent 13d0ba433a
commit 77b615417e
  1. 12
      lab-service/lab-file/src/main/java/org/springblade/file/service/impl/EquipVerificationLogServiceImpl.java
  2. 64
      lab-service/lab-file/src/main/java/org/springblade/file/service/impl/EquipVerificationServiceImpl.java

@ -81,11 +81,19 @@ public class EquipVerificationLogServiceImpl extends BaseServiceImpl<EquipVerifi
log.setCicleNum(Integer.parseInt(String.valueOf(between / e.getCycle())) + 1);
int insert = equipVerificationLogMapper.insert(log);
//保存成功
//保存成功
if(insert > 0){
//更新EquipVerification
e.setTotal(e.getTotal() + 1);
e.setLastVerificationTime(localDateTime);
//检定日期设定为当前轮次的最后一天
LocalDate verificationDay;
if((between % e.getCycle()) > 0){
verificationDay = enableDate.plusDays(((between / e.getCycle()) + 1) * e.getCycle());
}else{
verificationDay = enableDate.plusDays(((between / e.getCycle())) * e.getCycle());
}
e.setLastVerificationTime(verificationDay.atTime(0, 0,0));
equipVerificationMapper.updateById(e);
}
}

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

Loading…
Cancel
Save