diff --git a/lab-service/lab-file/src/main/java/org/springblade/file/service/impl/EquipVerificationLogServiceImpl.java b/lab-service/lab-file/src/main/java/org/springblade/file/service/impl/EquipVerificationLogServiceImpl.java index 291e195..5a20bb5 100644 --- a/lab-service/lab-file/src/main/java/org/springblade/file/service/impl/EquipVerificationLogServiceImpl.java +++ b/lab-service/lab-file/src/main/java/org/springblade/file/service/impl/EquipVerificationLogServiceImpl.java @@ -81,11 +81,19 @@ public class EquipVerificationLogServiceImpl extends BaseServiceImpl 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); } } diff --git a/lab-service/lab-file/src/main/java/org/springblade/file/service/impl/EquipVerificationServiceImpl.java b/lab-service/lab-file/src/main/java/org/springblade/file/service/impl/EquipVerificationServiceImpl.java index 874e196..7b2987c 100644 --- a/lab-service/lab-file/src/main/java/org/springblade/file/service/impl/EquipVerificationServiceImpl.java +++ b/lab-service/lab-file/src/main/java/org/springblade/file/service/impl/EquipVerificationServiceImpl.java @@ -104,31 +104,49 @@ public class EquipVerificationServiceImpl extends BaseServiceImpl 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); + } + } }); }