| | |
| | | |
| | | String strRoomResetTime = configApi.getConfigValueByKey(ECG_ROOM_RESET_TIME_KEY); |
| | | LocalTime roomResetTime = Utils.parseTime(strRoomResetTime); |
| | | // 【本需求·兜底加固】配置项 ecg.room.reset.time 缺失/格式非法时 parseTime 返回 null, |
| | | // 原实现直接 roomResetTime.getMinute() 会抛 NPE,而 resetScheduler() 在启动监听里 |
| | | // **没有 try/catch** ⇒ 开诊/闭诊/重置三个定时任务全部注册失败(等于"每日重置"从未生效)。 |
| | | // 这里给默认 23:00,并保证每个任务注册失败只记 ERROR、不影响启动。 |
| | | if (null == roomResetTime) { |
| | | roomResetTime = LocalTime.of(23, 0); |
| | | log.warn("[resetScheduler] 配置项 {} 缺失或格式非法(原值=[{}]),每日工位重置时间回退为默认 23:00", |
| | | ECG_ROOM_RESET_TIME_KEY, strRoomResetTime); |
| | | } |
| | | String roomResetCronExpression = String.format("0 %d %d * * ?", roomResetTime.getMinute(), roomResetTime.getHour()); |
| | | |
| | | startBizTask = taskRegistrar.scheduleCronTask(new CronTask(() -> { |
| | | System.out.println("Opening Task executed at: " + System.currentTimeMillis()); |
| | | queueService.startBiz(); |
| | | }, openCronExpression)); |
| | | try { |
| | | startBizTask = taskRegistrar.scheduleCronTask(new CronTask(() -> { |
| | | System.out.println("Opening Task executed at: " + System.currentTimeMillis()); |
| | | queueService.startBiz(); |
| | | }, openCronExpression)); |
| | | } catch (Exception e) { |
| | | log.error("[resetScheduler] 注册「开诊」定时任务失败(不影响其它任务). cron={}", openCronExpression, e); |
| | | } |
| | | |
| | | closeBizTask = taskRegistrar.scheduleCronTask(new CronTask(() -> { |
| | | System.out.println("Close Task executed at: " + System.currentTimeMillis()); |
| | | queueService.closeBiz(); |
| | | }, closeCronExpression)); |
| | | try { |
| | | closeBizTask = taskRegistrar.scheduleCronTask(new CronTask(() -> { |
| | | System.out.println("Close Task executed at: " + System.currentTimeMillis()); |
| | | queueService.closeBiz(); |
| | | }, closeCronExpression)); |
| | | } catch (Exception e) { |
| | | log.error("[resetScheduler] 注册「闭诊」定时任务失败(不影响其它任务). cron={}", closeCronExpression, e); |
| | | } |
| | | |
| | | resetRoomTask = taskRegistrar.scheduleCronTask(new CronTask(() -> { |
| | | System.out.println("Room Reset Task executed at: " + System.currentTimeMillis()); |
| | | roomService.resetRoom(false); |
| | | //queueSequenceService.resetQueueSequence(); |
| | | queueSequenceService.initNumber(); |
| | | }, roomResetCronExpression)); |
| | | try { |
| | | resetRoomTask = taskRegistrar.scheduleCronTask(new CronTask(() -> { |
| | | System.out.println("Room Reset Task executed at: " + System.currentTimeMillis()); |
| | | roomService.resetRoom(false); |
| | | //queueSequenceService.resetQueueSequence(); |
| | | queueSequenceService.initNumber(); |
| | | }, roomResetCronExpression)); |
| | | } catch (Exception e) { |
| | | log.error("[resetScheduler] 注册「每日工位重置」定时任务失败. cron={}", roomResetCronExpression, e); |
| | | } |
| | | |
| | | taskRegistrar.afterPropertiesSet(); |
| | | } |