From 74dfb82a264f1b779e50058145953caca907f6f2 Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期四, 18 十二月 2025 16:57:12 +0800
Subject: [PATCH] yys 巡检管理修改
---
src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskScheduler.java | 84 ++++++++++++++++++++++++++++--------------
1 files changed, 56 insertions(+), 28 deletions(-)
diff --git a/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskScheduler.java b/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskScheduler.java
index 34d1467..e76e62e 100644
--- a/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskScheduler.java
+++ b/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskScheduler.java
@@ -31,7 +31,7 @@
* 鏇存柊宸叉湁浠诲姟
*/
public void rescheduleTimingTask(TimingTask task) throws SchedulerException {
- TriggerKey triggerKey = new TriggerKey("trigger_" + task.getId());
+ TriggerKey triggerKey = new TriggerKey("trigger_" + task.getId(), "TIMING_TASK_TRIGGER_GROUP");
// 鑾峰彇鐜版湁瑙﹀彂鍣ㄥ苟杞崲涓� CronTrigger
Trigger oldTrigger = scheduler.getTrigger(triggerKey);
@@ -39,14 +39,28 @@
throw new SchedulerException("Existing trigger is not a CronTrigger");
}
- // 鏋勫缓鏂拌Е鍙戝櫒
- Trigger newTrigger = TriggerBuilder.newTrigger()
- .withIdentity(triggerKey)
- .withDescription(task.getTaskName())
- .withSchedule(CronScheduleBuilder.cronSchedule(convertToCronExpression(task)))
- .startAt(Date.from(task.getNextExecutionTime().atZone(ZoneId.systemDefault()).toInstant()))
- .forJob(oldTrigger.getJobKey())
+ // 3. 鏋勫缓CronTrigger锛岀‘淇濇寔涔呭寲閰嶇疆
+ CronTrigger newTrigger = TriggerBuilder.newTrigger()
+ .withIdentity(triggerKey) // 鍞竴鏍囪瘑锛岀敤浜庢寔涔呭寲瀛樺偍
+ .withDescription(task.getTaskName() + "_TRIGGER") // 瑙﹀彂鍣ㄦ弿杩�
+ .forJob(oldTrigger.getJobKey()) // 鍏宠仈瀵瑰簲鐨凧ob
+ .withSchedule(CronScheduleBuilder
+ .cronSchedule(convertToCronExpression(task)) // 閿欒繃鎵ц鏃剁殑绛栫暐锛堟牴鎹笟鍔¤皟鏁达級
+ )
+ // 4. 璁剧疆寮�濮嬫椂闂达紙鑻ヤ负null鍒欑珛鍗崇敓鏁堬級
+ .startAt(task.getNextExecutionTime() != null
+ ? Date.from(task.getNextExecutionTime().atZone(ZoneId.systemDefault()).toInstant())
+ : new Date())
.build();
+
+ // 鏋勫缓鏂拌Е鍙戝櫒
+// Trigger newTrigger = TriggerBuilder.newTrigger()
+// .withIdentity(triggerKey)
+// .withDescription(task.getTaskName())
+// .withSchedule(CronScheduleBuilder.cronSchedule(convertToCronExpression(task)))
+// .startAt(Date.from(task.getNextExecutionTime().atZone(ZoneId.systemDefault()).toInstant()))
+// .forJob(oldTrigger.getJobKey())
+// .build();
scheduler.rescheduleJob(triggerKey, newTrigger);
}
@@ -76,34 +90,48 @@
}
private JobDetail buildJobDetail(TimingTask task) {
- JobDataMap jobDataMap = new JobDataMap();
- jobDataMap.put("taskId", task.getId());
+ // 1. 鏋勫缓鍞竴JobKey锛堝熀浜庝换鍔D锛岀‘淇濋噸鍚悗鑳借瘑鍒級
+ JobKey jobKey = new JobKey("timingTask_" + task.getId(), "TIMING_TASK_GROUP");
+ // 2. 灏佽浠诲姟鏁版嵁锛堜粎浣跨敤鍩烘湰绫诲瀷锛岀‘淇濆彲搴忓垪鍖栵級
+ JobDataMap jobDataMap = new JobDataMap();
+ jobDataMap.put("taskId", task.getId()); // 浠诲姟ID锛圠ong锛屽彲搴忓垪鍖栵級
+ jobDataMap.put("taskName", task.getTaskName()); // 浠诲姟鍚嶇О锛圫tring锛屽彲搴忓垪鍖栵級
+ jobDataMap.put("taskType", task.getFrequencyType()); // 浠诲姟绫诲瀷锛圫tring锛�
+ // 鎸夐渶娣诲姞鍏朵粬蹇呰鐨勫熀鏈被鍨嬪弬鏁�
+
+ // 3. 鏋勫缓JobDetail锛岃缃寔涔呭寲鐩稿叧灞炴��
return JobBuilder.newJob(TimingTaskJob.class)
- .withIdentity("timingTask_" + task.getId())
- .withDescription(task.getTaskName())
- .usingJobData(jobDataMap)
- .storeDurably()
+ .withIdentity(jobKey) // 鍞竴鏍囪瘑锛岀敤浜庢寔涔呭寲瀛樺偍
+ .withDescription(task.getTaskName()) // 浠诲姟鎻忚堪锛屽瓨鍏ユ暟鎹簱
+ .usingJobData(jobDataMap) // 缁戝畾浠诲姟鏁版嵁
+ .storeDurably() // 鍗充娇娌℃湁瑙﹀彂鍣ㄥ叧鑱斾篃鎸佷箙鍖栦繚瀛�
+ .requestRecovery(true) // 褰撹皟搴﹀櫒宕╂簝鍚庢仮澶嶆椂锛岄噸鏂版墽琛屾湭瀹屾垚鐨勪换鍔�
.build();
}
private Trigger buildJobTrigger(TimingTask task, JobDetail jobDetail) {
+ // 1. 鏋勫缓鍞竴TriggerKey锛堝熀浜庝换鍔D锛�
+ TriggerKey triggerKey = new TriggerKey("trigger_" + task.getId(), "TIMING_TASK_TRIGGER_GROUP");
+
+ // 2. 鐢熸垚Cron琛ㄨ揪寮忥紙鍘熼�昏緫涓嶅彉锛�
String cronExpression = convertToCronExpression(task);
- TriggerBuilder<CronTrigger> triggerBuilder = TriggerBuilder.newTrigger()
- .withIdentity("trigger_" + task.getId())
- .withDescription(task.getTaskName())
- .withSchedule(CronScheduleBuilder.cronSchedule(cronExpression));
-
- if (jobDetail != null) {
- triggerBuilder.forJob(jobDetail);
- }
-
- if (task.getNextExecutionTime() != null) {
- triggerBuilder.startAt(Date.from(task.getNextExecutionTime().atZone(ZoneId.systemDefault()).toInstant()));
- }
-
- return triggerBuilder.build();
+ // 3. 鏋勫缓CronTrigger锛岀‘淇濇寔涔呭寲閰嶇疆
+ CronTrigger trigger = TriggerBuilder.newTrigger()
+ .withIdentity(triggerKey) // 鍞竴鏍囪瘑锛岀敤浜庢寔涔呭寲瀛樺偍
+ .withDescription(task.getTaskName() + "_TRIGGER") // 瑙﹀彂鍣ㄦ弿杩�
+ .forJob(jobDetail) // 鍏宠仈瀵瑰簲鐨凧ob
+ .withSchedule(CronScheduleBuilder
+ .cronSchedule(cronExpression)
+ .withMisfireHandlingInstructionDoNothing() // 閿欒繃鎵ц鏃剁殑绛栫暐锛堟牴鎹笟鍔¤皟鏁达級
+ )
+ // 4. 璁剧疆寮�濮嬫椂闂达紙鑻ヤ负null鍒欑珛鍗崇敓鏁堬級
+ .startAt(task.getNextExecutionTime() != null
+ ? Date.from(task.getNextExecutionTime().atZone(ZoneId.systemDefault()).toInstant())
+ : new Date())
+ .build();
+ return trigger;
}
private String convertToCronExpression(TimingTask task) {
// 鍙傛暟鏍¢獙
--
Gitblit v1.9.3