From fe176790d7cdfac0dda515e17980fb91dc37f8cc Mon Sep 17 00:00:00 2001 From: zhengweilin Date: Mon, 4 Dec 2023 23:06:02 +0800 Subject: [PATCH] =?UTF-8?q?fix:=202.5.0:=201=E3=80=81Dashboard=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=B8=B4=E7=95=8C12=E7=82=B9=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=202=E3=80=81=E4=BF=AE=E5=A4=8D=E7=BB=84=E3=80=81?= =?UTF-8?q?=E6=8A=98=E7=BA=BF=E5=9B=BE=E6=B2=A1=E6=9C=89=E6=8C=89=E5=91=BD?= =?UTF-8?q?=E5=90=8D=E7=A9=BA=E9=97=B4=E9=9A=94=E7=A6=BB=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataobject/DashboardLineResponseDO.java | 5 +++ .../persistence/mapper/JobSummaryMapper.java | 1 + .../mapper/RetrySummaryMapper.java | 1 + .../mysql/mapper/JobSummaryMapper.xml | 9 ++++-- .../mysql/mapper/RetrySummaryMapper.xml | 14 ++++++-- .../common/config/SystemProperties.java | 4 +++ .../support/schedule/JobSummarySchedule.java | 32 +++++++++++-------- .../schedule/RetrySummarySchedule.java | 32 +++++++++++-------- .../server/web/model/enums/DateTypeEnum.java | 25 +++++++++++++++ .../response/DashboardLineResponseVO.java | 5 +++ .../service/impl/DashBoardServiceImpl.java | 4 +-- frontend/src/views/dashboard/Analysis.vue | 2 +- frontend/src/views/dashboard/JobAnalysis.vue | 2 +- 13 files changed, 102 insertions(+), 34 deletions(-) diff --git a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/dataobject/DashboardLineResponseDO.java b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/dataobject/DashboardLineResponseDO.java index e1ee25b13..0dfd1b2ef 100644 --- a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/dataobject/DashboardLineResponseDO.java +++ b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/dataobject/DashboardLineResponseDO.java @@ -64,4 +64,9 @@ public class DashboardLineResponseDO { */ private Long cancelNum; + /** + * 定时-成功数 + */ + private Long success; + } diff --git a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/mapper/JobSummaryMapper.java b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/mapper/JobSummaryMapper.java index 757edbe7b..3608d072a 100644 --- a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/mapper/JobSummaryMapper.java +++ b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/mapper/JobSummaryMapper.java @@ -28,6 +28,7 @@ public interface JobSummaryMapper extends BaseMapper { IPage jobTaskList(@Param("namespaceId") String namespaceId, Page page); List jobLineList(@Param("namespaceId") String namespaceId, + @Param("groupName") String groupName, @Param("type") String type, @Param("from") LocalDateTime from, @Param("to") LocalDateTime to); diff --git a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/mapper/RetrySummaryMapper.java b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/mapper/RetrySummaryMapper.java index c93e16610..8dc259e33 100644 --- a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/mapper/RetrySummaryMapper.java +++ b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/mapper/RetrySummaryMapper.java @@ -32,6 +32,7 @@ public interface RetrySummaryMapper extends BaseMapper { IPage retryTaskList(@Param("namespaceId") String namespaceId, Page page); List retryLineList(@Param("namespaceId") String namespaceId, + @Param("groupName") String groupName, @Param("type") String type, @Param("from") LocalDateTime from, @Param("to") LocalDateTime to); diff --git a/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/JobSummaryMapper.xml b/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/JobSummaryMapper.xml index 655c712ea..6c1e80717 100644 --- a/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/JobSummaryMapper.xml +++ b/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/JobSummaryMapper.xml @@ -93,14 +93,19 @@ AS createDt, - ifnull(SUM(success_num), 0) AS successNum, + ifnull(SUM(success_num), 0) AS success, ifnull(SUM(fail_num), 0) AS failNum, ifnull(SUM(stop_num), 0) AS stopNum, ifnull(SUM(cancel_num), 0) AS cancelNum, ifnull(SUM(fail_num + stop_num + cancel_num), 0) AS fail, ifnull(SUM(success_num + fail_num + stop_num + cancel_num), 0) AS total FROM job_summary - WHERE namespace_id = #{namespaceId} AND trigger_at BETWEEN #{from} AND #{to} + + + AND group_name = #{groupName} + + AND namespace_id = #{namespaceId} AND trigger_at BETWEEN #{from} AND #{to} + GROUP BY createDt diff --git a/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/RetrySummaryMapper.xml b/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/RetrySummaryMapper.xml index 7091f203a..c0abcbcfc 100644 --- a/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/RetrySummaryMapper.xml +++ b/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/RetrySummaryMapper.xml @@ -57,7 +57,11 @@ rs.finish_num = tt.finish_num, rs.max_count_num = tt.max_count_num, rs.suspend_num = tt.suspend_num - WHERE rs.scene_name = tt.scene_name AND rs.trigger_at = tt.trigger_at + WHERE + rs.namespace_id = tt.namespace_id + AND rs.group_name = tt.group_name + AND rs.scene_name = tt.scene_name + AND rs.trigger_at = tt.trigger_at diff --git a/easy-retry-server/easy-retry-server-common/src/main/java/com/aizuda/easy/retry/server/common/config/SystemProperties.java b/easy-retry-server/easy-retry-server-common/src/main/java/com/aizuda/easy/retry/server/common/config/SystemProperties.java index c147b785c..b07bcd358 100644 --- a/easy-retry-server/easy-retry-server-common/src/main/java/com/aizuda/easy/retry/server/common/config/SystemProperties.java +++ b/easy-retry-server/easy-retry-server-common/src/main/java/com/aizuda/easy/retry/server/common/config/SystemProperties.java @@ -114,5 +114,9 @@ public class SystemProperties { } + /** + * Dashboard 任务容错天数 + */ + private int summaryDay = 7; } diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/schedule/JobSummarySchedule.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/schedule/JobSummarySchedule.java index 186ae465e..b43f70d86 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/schedule/JobSummarySchedule.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/schedule/JobSummarySchedule.java @@ -4,6 +4,7 @@ import com.aizuda.easy.retry.common.core.enums.JobTaskBatchStatusEnum; import com.aizuda.easy.retry.common.core.log.LogUtils; import com.aizuda.easy.retry.common.core.util.JsonUtil; import com.aizuda.easy.retry.server.common.Lifecycle; +import com.aizuda.easy.retry.server.common.config.SystemProperties; import com.aizuda.easy.retry.server.common.dto.JobTaskBatchReason; import com.aizuda.easy.retry.server.common.schedule.AbstractSchedule; import com.aizuda.easy.retry.template.datasource.persistence.dataobject.JobBatchSummaryResponseDO; @@ -35,6 +36,8 @@ public class JobSummarySchedule extends AbstractSchedule implements Lifecycle { private JobTaskBatchMapper jobTaskBatchMapper; @Autowired private JobSummaryMapper jobSummaryMapper; + @Autowired + private SystemProperties systemProperties; @Override public String lockName() { @@ -54,21 +57,24 @@ public class JobSummarySchedule extends AbstractSchedule implements Lifecycle { @Override protected void doExecute() { try { - // 定时按日实时查询统计数据(00:00:00 - 23:59:59) - LocalDateTime todayFrom = LocalDateTime.of(LocalDate.now(), LocalTime.MIN); - LocalDateTime todayTo = LocalDateTime.of(LocalDate.now(), LocalTime.MAX); - List summaryResponseDOList = jobTaskBatchMapper.summaryJobBatchList(todayFrom, todayTo); - if (summaryResponseDOList == null || summaryResponseDOList.size() < 1) { - return; - } + for (int i = 0; i < systemProperties.getSummaryDay(); i++) { - // insertOrUpdate - List jobSummaryList = jobSummaryList(todayFrom, summaryResponseDOList); - int total = jobSummaryMapper.updateBatchTriggerAtById(jobSummaryList); - if (total < 1) { - jobSummaryMapper.insertBatchJobSummary(jobSummaryList); + // 定时按日实时查询统计数据(00:00:00 - 23:59:59) + LocalDateTime todayFrom = LocalDateTime.of(LocalDate.now(), LocalTime.MIN).plusDays(-i); + LocalDateTime todayTo = LocalDateTime.of(LocalDate.now(), LocalTime.MAX).plusDays(-i); + List summaryResponseDOList = jobTaskBatchMapper.summaryJobBatchList(todayFrom, todayTo); + if (summaryResponseDOList == null || summaryResponseDOList.size() < 1) { + continue; + } + + // insertOrUpdate + List jobSummaryList = jobSummaryList(todayFrom, summaryResponseDOList); + int total = jobSummaryMapper.updateBatchTriggerAtById(jobSummaryList); + if (total < 1) { + jobSummaryMapper.insertBatchJobSummary(jobSummaryList); + } + LogUtils.debug(log, "job summary dashboard success todayFrom:[{}] todayTo:[{}] total:[{}]", todayFrom, todayTo, total); } - LogUtils.debug(log, "job summary dashboard success todayFrom:[{}] todayTo:[{}] total:[{}]", todayFrom, todayTo, total); } catch (Exception e) { LogUtils.error(log, "job summary dashboard log error", e); } diff --git a/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/support/schedule/RetrySummarySchedule.java b/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/support/schedule/RetrySummarySchedule.java index d69cc709a..c28e31452 100644 --- a/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/support/schedule/RetrySummarySchedule.java +++ b/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/support/schedule/RetrySummarySchedule.java @@ -2,6 +2,7 @@ package com.aizuda.easy.retry.server.retry.task.support.schedule; import com.aizuda.easy.retry.common.core.log.LogUtils; import com.aizuda.easy.retry.server.common.Lifecycle; +import com.aizuda.easy.retry.server.common.config.SystemProperties; import com.aizuda.easy.retry.server.common.schedule.AbstractSchedule; import com.aizuda.easy.retry.template.datasource.persistence.dataobject.DashboardRetryResponseDO; import com.aizuda.easy.retry.template.datasource.persistence.mapper.RetrySummaryMapper; @@ -33,6 +34,8 @@ public class RetrySummarySchedule extends AbstractSchedule implements Lifecycle private RetryTaskLogMapper retryTaskLogMapper; @Autowired private RetrySummaryMapper retrySummaryMapper; + @Autowired + private SystemProperties systemProperties; @Override public String lockName() { @@ -52,21 +55,24 @@ public class RetrySummarySchedule extends AbstractSchedule implements Lifecycle @Override protected void doExecute() { try { - // 重试按日实时查询统计数据(00:00:00 - 23:59:59) - LocalDateTime todayFrom = LocalDateTime.of(LocalDate.now(), LocalTime.MIN); - LocalDateTime todayTo = LocalDateTime.of(LocalDate.now(), LocalTime.MAX); - List dashboardRetryResponseDOList = retryTaskLogMapper.retrySummaryRetryTaskLogList(todayFrom, todayTo); - if (dashboardRetryResponseDOList == null || dashboardRetryResponseDOList.size() < 1) { - return; - } + for (int i = 0; i < systemProperties.getSummaryDay(); i++) { - // insertOrUpdate - List retrySummaryList = retrySummaryList(todayFrom, dashboardRetryResponseDOList); - int total = retrySummaryMapper.updateBatchSceneNameById(retrySummaryList); - if (total < 1) { - retrySummaryMapper.insertBatchRetrySummary(retrySummaryList); + // 重试按日实时查询统计数据(00:00:00 - 23:59:59) + LocalDateTime todayFrom = LocalDateTime.of(LocalDate.now(), LocalTime.MIN).plusDays(-i); + LocalDateTime todayTo = LocalDateTime.of(LocalDate.now(), LocalTime.MAX).plusDays(-i); + List dashboardRetryResponseDOList = retryTaskLogMapper.retrySummaryRetryTaskLogList(todayFrom, todayTo); + if (dashboardRetryResponseDOList == null || dashboardRetryResponseDOList.size() < 1) { + continue; + } + + // insertOrUpdate + List retrySummaryList = retrySummaryList(todayFrom, dashboardRetryResponseDOList); + int total = retrySummaryMapper.updateBatchSceneNameById(retrySummaryList); + if (total < 1) { + retrySummaryMapper.insertBatchRetrySummary(retrySummaryList); + } + LogUtils.debug(log, "retry summary dashboard success todayFrom:[{}] todayTo:[{}] total:[{}]", todayFrom, todayTo, total); } - LogUtils.debug(log, "retry summary dashboard success todayFrom:[{}] todayTo:[{}] total:[{}]", todayFrom, todayTo, total); } catch (Exception e) { LogUtils.error(log, "retry summary dashboard log error", e); } diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/enums/DateTypeEnum.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/enums/DateTypeEnum.java index e4ccbd88c..82ab09524 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/enums/DateTypeEnum.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/enums/DateTypeEnum.java @@ -36,6 +36,7 @@ public enum DateTypeEnum { .setFailNum(0L) .setMaxCountNum(0L) .setRunningNum(0L) + .setSuccess(0L) .setSuccessNum(0L) .setSuspendNum(0L) .setStopNum(0L) @@ -70,6 +71,7 @@ public enum DateTypeEnum { .setFailNum(0L) .setMaxCountNum(0L) .setRunningNum(0L) + .setSuccess(0L) .setSuccessNum(0L) .setSuspendNum(0L) .setStopNum(0L) @@ -105,6 +107,7 @@ public enum DateTypeEnum { .setFailNum(0L) .setMaxCountNum(0L) .setRunningNum(0L) + .setSuccess(0L) .setSuccessNum(0L) .setSuspendNum(0L) .setStopNum(0L) @@ -127,6 +130,28 @@ public enum DateTypeEnum { * 年 */ YEAR(dashboardLineResponseVOList -> { + Map dispatchQuantityResponseVOMap = dashboardLineResponseVOList.stream().collect(Collectors.toMap(DashboardLineResponseVO::getCreateDt, i -> i)); + for (int i = 0; i < 12; i++) { + + String format = LocalDateTime.of(LocalDate.now().minusMonths(i), LocalTime.MIN).format(DateTimeFormatter.ofPattern("yyyy-MM")); + DashboardLineResponseVO dashboardLineResponseVO = dispatchQuantityResponseVOMap.get(format); + if (Objects.isNull(dashboardLineResponseVO)) { + dashboardLineResponseVO = new DashboardLineResponseVO() + .setTotal(0L) + .setTotalNum(0L) + .setFail(0L) + .setFailNum(0L) + .setMaxCountNum(0L) + .setRunningNum(0L) + .setSuccess(0L) + .setSuccessNum(0L) + .setSuspendNum(0L) + .setStopNum(0L) + .setCancelNum(0L) + .setCreateDt(format); + dashboardLineResponseVOList.add(dashboardLineResponseVO); + } + } }, (startTime) -> { return LocalDateTime.of(LocalDate.now().with(TemporalAdjusters.firstDayOfYear()), LocalTime.MIN.withNano(0)); }, (endTime) -> { diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/response/DashboardLineResponseVO.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/response/DashboardLineResponseVO.java index 88ff7a3a2..8f1cbf36f 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/response/DashboardLineResponseVO.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/response/DashboardLineResponseVO.java @@ -66,4 +66,9 @@ public class DashboardLineResponseVO { */ private Long cancelNum; + /** + * 定时-成功数 + */ + private Long success; + } diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/DashBoardServiceImpl.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/DashBoardServiceImpl.java index 27ccd1e1b..a4eb0b159 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/DashBoardServiceImpl.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/DashBoardServiceImpl.java @@ -105,7 +105,7 @@ public class DashBoardServiceImpl implements DashBoardService { DateTypeEnum dateTypeEnum = DateTypeEnum.valueOf(type); LocalDateTime startDateTime = dateTypeEnum.getStartTime().apply(StrUtil.isNotBlank(startTime) ? LocalDateTime.parse(startTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : null); LocalDateTime endDateTime = dateTypeEnum.getEndTime().apply(StrUtil.isNotBlank(endTime) ? LocalDateTime.parse(endTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : null); - List dashboardRetryLinkeResponseDOList = retrySummaryMapper.retryLineList(namespaceId, type, startDateTime, endDateTime); + List dashboardRetryLinkeResponseDOList = retrySummaryMapper.retryLineList(namespaceId, groupName, type, startDateTime, endDateTime); List dashboardLineResponseVOList = DispatchQuantityResponseVOConverter.INSTANCE.toDashboardLineResponseVO(dashboardRetryLinkeResponseDOList); dateTypeEnum.getConsumer().accept(dashboardLineResponseVOList); dashboardLineResponseVOList.sort(Comparator.comparing(a -> a.getCreateDt())); @@ -133,7 +133,7 @@ public class DashBoardServiceImpl implements DashBoardService { DateTypeEnum dateTypeEnum = DateTypeEnum.valueOf(type); LocalDateTime startDateTime = dateTypeEnum.getStartTime().apply(StrUtil.isNotBlank(startTime) ? LocalDateTime.parse(startTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : null); LocalDateTime endDateTime = dateTypeEnum.getEndTime().apply(StrUtil.isNotBlank(endTime) ? LocalDateTime.parse(endTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : null); - List dashboardLineResponseDOList = jobSummaryMapper.jobLineList(namespaceId, type, startDateTime, endDateTime); + List dashboardLineResponseDOList = jobSummaryMapper.jobLineList(namespaceId, groupName, type, startDateTime, endDateTime); List dashboardLineResponseVOList = DispatchQuantityResponseVOConverter.INSTANCE.toDashboardLineResponseVO(dashboardLineResponseDOList); dateTypeEnum.getConsumer().accept(dashboardLineResponseVOList); dashboardLineResponseVOList.sort(Comparator.comparing(a -> a.getCreateDt())); diff --git a/frontend/src/views/dashboard/Analysis.vue b/frontend/src/views/dashboard/Analysis.vue index 96941836e..31a1475d4 100644 --- a/frontend/src/views/dashboard/Analysis.vue +++ b/frontend/src/views/dashboard/Analysis.vue @@ -81,7 +81,7 @@ {{ $t('dashboard.analysis.all-year') }}
- +
{{ item }} diff --git a/frontend/src/views/dashboard/JobAnalysis.vue b/frontend/src/views/dashboard/JobAnalysis.vue index 6ab770791..0488b6c2b 100644 --- a/frontend/src/views/dashboard/JobAnalysis.vue +++ b/frontend/src/views/dashboard/JobAnalysis.vue @@ -118,7 +118,7 @@ export default { this.rankList = res.data.rankList this.taskList = res.data.taskList res.data.dashboardLineResponseDOList.forEach(res => { - this.successNum += res.successNum + this.successNum += res.success this.failNum += res.failNum this.stopNum += res.stopNum this.cancelNum += res.cancelNum