From 4faf8ddee74dd3917527fcae590330123a1c2c3a Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Tue, 9 Jul 2024 12:18:43 +0800 Subject: [PATCH] =?UTF-8?q?feat(X-Pack):=20=E5=AE=9A=E6=97=B6=E6=8A=A5?= =?UTF-8?q?=E5=91=8A=E5=A2=9E=E5=8A=A0=E5=A4=B1=E8=B4=A5=E9=87=8D=E8=AF=95?= =?UTF-8?q?=E6=9C=BA=E5=88=B6=20#10171?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataease/job/schedule/DeTaskExecutor.java | 31 +++++++++++++++++++ core/core-frontend/src/locales/zh-CN.ts | 1 + de-xpack | 2 +- .../api/report/dto/ReportCreator.java | 8 ++++- .../dataease/api/report/vo/ReportInfoVO.java | 6 ++++ 5 files changed, 46 insertions(+), 2 deletions(-) diff --git a/core/core-backend/src/main/java/io/dataease/job/schedule/DeTaskExecutor.java b/core/core-backend/src/main/java/io/dataease/job/schedule/DeTaskExecutor.java index 819be4a98e..74766c5138 100644 --- a/core/core-backend/src/main/java/io/dataease/job/schedule/DeTaskExecutor.java +++ b/core/core-backend/src/main/java/io/dataease/job/schedule/DeTaskExecutor.java @@ -16,8 +16,10 @@ import java.util.Map; public class DeTaskExecutor { protected static final String IS_TEMP_TASK = "isTempTask"; + protected static final String IS_RETRY_TASK = "isRetryTask"; private static final String JOB_GROUP = "REPORT_TASK"; + private static final String RETRY_JOB_GROUP = "RETRY_REPORT_TASK"; private static final String TEMP_JOB_GROUP = "TEMP_REPORT_TASK"; @Resource @@ -47,6 +49,28 @@ public class DeTaskExecutor { scheduleManager.addOrUpdateCronJob(jobKey, triggerKey, DeXpackScheduleJob.class, cron, new Date(startTime), end, jobDataMap); } + public void addRetryTask(Long taskId, Integer retryLimit, Integer retryInterval) { + long saltTime = 3000L; + long interval = retryInterval == null ? 0L : retryInterval; + long intervalMill = interval * 60000L; + long now = System.currentTimeMillis(); + long startTime = now - saltTime + intervalMill; + String cron = "0 */" + retryInterval + " * * * ?"; + long endTime = (retryLimit - 1) * intervalMill + startTime + saltTime; + String key = taskId.toString(); + if (CronUtils.taskExpire(endTime)) { + return; + } + JobKey jobKey = new JobKey(key, RETRY_JOB_GROUP); + TriggerKey triggerKey = new TriggerKey(key, RETRY_JOB_GROUP); + JobDataMap jobDataMap = new JobDataMap(); + jobDataMap.put("taskId", taskId); + jobDataMap.put(IS_RETRY_TASK, true); + Date end = null; + if (ObjectUtils.isNotEmpty(endTime)) end = new Date(endTime); + scheduleManager.addOrUpdateCronJob(jobKey, triggerKey, DeXpackScheduleJob.class, cron, new Date(startTime), end, jobDataMap); + } + public boolean fireNow(Long taskId) throws Exception { String key = taskId.toString(); JobKey jobKey = new JobKey(key, JOB_GROUP); @@ -74,4 +98,11 @@ public class DeTaskExecutor { TriggerKey triggerKey = new TriggerKey(key, isTemp ? TEMP_JOB_GROUP : JOB_GROUP); scheduleManager.removeJob(jobKey, triggerKey); } + + public void removeRetryTask(Long taskId) { + String key = taskId.toString(); + JobKey jobKey = new JobKey(key, RETRY_JOB_GROUP); + TriggerKey triggerKey = new TriggerKey(key, RETRY_JOB_GROUP); + scheduleManager.removeJob(jobKey, triggerKey); + } } diff --git a/core/core-frontend/src/locales/zh-CN.ts b/core/core-frontend/src/locales/zh-CN.ts index c1e0b56671..afcd01b8c9 100644 --- a/core/core-frontend/src/locales/zh-CN.ts +++ b/core/core-frontend/src/locales/zh-CN.ts @@ -2425,6 +2425,7 @@ export default { add_task: '添加任务', lark_groups: '飞书群', send_setting: '发送设置', + retrying_settings: '发送失败重试设置', start_time: '开始时间', end_time: '结束时间', once_a_day: '每天', diff --git a/de-xpack b/de-xpack index 6295001ace..b1ca2c316d 160000 --- a/de-xpack +++ b/de-xpack @@ -1 +1 @@ -Subproject commit 6295001ace48d7ca800b42bab215c85a4cb4e4fa +Subproject commit b1ca2c316d9d3f81d88c4987d4bad6985374d080 diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/report/dto/ReportCreator.java b/sdk/api/api-base/src/main/java/io/dataease/api/report/dto/ReportCreator.java index 391b794266..d48b58a83c 100644 --- a/sdk/api/api-base/src/main/java/io/dataease/api/report/dto/ReportCreator.java +++ b/sdk/api/api-base/src/main/java/io/dataease/api/report/dto/ReportCreator.java @@ -22,7 +22,7 @@ public class ReportCreator implements Serializable { private Integer rtid; - @JsonSerialize(using= ToStringSerializer.class) + @JsonSerialize(using = ToStringSerializer.class) private Long rid; private Integer format; @@ -53,5 +53,11 @@ public class ReportCreator implements Serializable { private Long endTime; + private Boolean retryEnable; + + private Integer retryLimit; + + private Integer retryInterval; + private List reportFilter; } diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/report/vo/ReportInfoVO.java b/sdk/api/api-base/src/main/java/io/dataease/api/report/vo/ReportInfoVO.java index b5796cec98..0da44dd137 100644 --- a/sdk/api/api-base/src/main/java/io/dataease/api/report/vo/ReportInfoVO.java +++ b/sdk/api/api-base/src/main/java/io/dataease/api/report/vo/ReportInfoVO.java @@ -54,4 +54,10 @@ public class ReportInfoVO implements Serializable { private Long startTime; private Long endTime; + + private Boolean retryEnable; + + private Integer retryLimit; + + private Integer retryInterval; }