From f581313d2ddcd43487d0c73ddb1ebc8a999cfcd6 Mon Sep 17 00:00:00 2001
From: byteblogs168 <598092184@qq.com>
Date: Sat, 14 Jan 2023 20:46:11 +0800
Subject: [PATCH] =?UTF-8?q?0.0.2.0=20=E6=8E=92=E5=90=8D=E5=92=8C=E8=B0=83?=
=?UTF-8?q?=E5=BA=A6=E9=9D=A2=E6=9D=BF=E6=B7=BB=E5=8A=A0=E6=97=B6=E9=97=B4?=
=?UTF-8?q?=E6=9D=A1=E4=BB=B6=E5=92=8C=E7=BB=84=E6=9D=A1=E4=BB=B6=E6=90=9C?=
=?UTF-8?q?=E7=B4=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
frontend/src/components/Charts/Line.vue | 12 +-
frontend/src/views/dashboard/Analysis.vue | 126 +++++++------
.../mybatis/mapper/RetryTaskLogMapper.java | 12 +-
.../server/service/DashBoardService.java | 4 +-
.../service/impl/DashBoardServiceImpl.java | 53 +++++-
.../web/controller/DashBoardController.java | 17 +-
.../server/web/model/enums/DateTypeEnum.java | 171 ++++++++++++++++++
.../resources/mapper/RetryTaskLogMapper.xml | 48 +++--
8 files changed, 357 insertions(+), 86 deletions(-)
create mode 100644 x-retry-server/src/main/java/com/x/retry/server/web/model/enums/DateTypeEnum.java
diff --git a/frontend/src/components/Charts/Line.vue b/frontend/src/components/Charts/Line.vue
index d4b1c744e..78fd75144 100644
--- a/frontend/src/components/Charts/Line.vue
+++ b/frontend/src/components/Charts/Line.vue
@@ -7,6 +7,7 @@
-
diff --git a/x-retry-server/src/main/java/com/x/retry/server/persistence/mybatis/mapper/RetryTaskLogMapper.java b/x-retry-server/src/main/java/com/x/retry/server/persistence/mybatis/mapper/RetryTaskLogMapper.java
index 551fcece3..da91ee6dc 100644
--- a/x-retry-server/src/main/java/com/x/retry/server/persistence/mybatis/mapper/RetryTaskLogMapper.java
+++ b/x-retry-server/src/main/java/com/x/retry/server/persistence/mybatis/mapper/RetryTaskLogMapper.java
@@ -7,6 +7,7 @@ import com.x.retry.server.web.model.response.DispatchQuantityResponseVO;
import com.x.retry.server.web.model.response.SceneQuantityRankResponseVO;
import org.apache.ibatis.annotations.Param;
+import java.time.LocalDateTime;
import java.util.List;
public interface RetryTaskLogMapper extends BaseMapper {
@@ -19,9 +20,16 @@ public interface RetryTaskLogMapper extends BaseMapper {
long countTaskByRetryStatus(@Param("retryStatus") Integer retryStatus);
- List rankSceneQuantity(@Param("groupName") String groupName);
+ List rankSceneQuantity(@Param("groupName") String groupName,
+ @Param("startTime")LocalDateTime startTime,
+ @Param("endTime")LocalDateTime endTime
+ );
List lineDispatchQuantity(@Param("groupName") String groupName,
- @Param("retryStatus") Integer retryStatus);
+ @Param("retryStatus") Integer retryStatus,
+ @Param("type") String type,
+ @Param("startTime")LocalDateTime startTime,
+ @Param("endTime")LocalDateTime endTime
+ );
}
diff --git a/x-retry-server/src/main/java/com/x/retry/server/service/DashBoardService.java b/x-retry-server/src/main/java/com/x/retry/server/service/DashBoardService.java
index 08f69ca33..154f7099d 100644
--- a/x-retry-server/src/main/java/com/x/retry/server/service/DashBoardService.java
+++ b/x-retry-server/src/main/java/com/x/retry/server/service/DashBoardService.java
@@ -19,8 +19,8 @@ public interface DashBoardService {
ActivePodQuantityResponseVO countActivePod();
- List rankSceneQuantity(String groupName);
+ List rankSceneQuantity(String groupName, String type, String startTime, String endTime);
- List lineDispatchQuantity(String groupName);
+ List lineDispatchQuantity(String groupName, String type, String startTime, String endTime);
}
diff --git a/x-retry-server/src/main/java/com/x/retry/server/service/impl/DashBoardServiceImpl.java b/x-retry-server/src/main/java/com/x/retry/server/service/impl/DashBoardServiceImpl.java
index dedf79e30..97cc60c36 100644
--- a/x-retry-server/src/main/java/com/x/retry/server/service/impl/DashBoardServiceImpl.java
+++ b/x-retry-server/src/main/java/com/x/retry/server/service/impl/DashBoardServiceImpl.java
@@ -8,15 +8,20 @@ import com.x.retry.server.persistence.mybatis.mapper.ServerNodeMapper;
import com.x.retry.server.persistence.mybatis.po.RetryTaskLog;
import com.x.retry.server.persistence.mybatis.po.ServerNode;
import com.x.retry.server.service.DashBoardService;
+import com.x.retry.server.web.model.enums.DateTypeEnum;
import com.x.retry.server.web.model.response.ActivePodQuantityResponseVO;
import com.x.retry.server.web.model.response.DispatchQuantityResponseVO;
import com.x.retry.server.web.model.response.SceneQuantityRankResponseVO;
import com.x.retry.server.web.model.response.TaskQuantityResponseVO;
+import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -79,20 +84,49 @@ public class DashBoardServiceImpl implements DashBoardService {
}
@Override
- public List rankSceneQuantity(String groupName) {
- return retryTaskLogMapper.rankSceneQuantity(groupName);
+ public List rankSceneQuantity(String groupName, String type, String startTime, String endTime) {
+ LocalDateTime startDateTime = LocalDateTime.now();
+ if (StringUtils.isNotBlank(startTime)) {
+ startDateTime = LocalDateTime.parse(startTime, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+ }
+
+ LocalDateTime endDateTime = LocalDateTime.now();
+ if (StringUtils.isNotBlank(endTime)) {
+ endDateTime = LocalDateTime.parse(endTime, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+ }
+
+ DateTypeEnum dateTypeEnum = DateTypeEnum.valueOf(type.toUpperCase());
+ startDateTime = dateTypeEnum.getStartTime().apply(startDateTime);
+ endDateTime = dateTypeEnum.getEndTime().apply(endDateTime);
+
+ return retryTaskLogMapper.rankSceneQuantity(groupName, startDateTime, endDateTime);
}
@Override
- public List lineDispatchQuantity(String groupName) {
+ public List lineDispatchQuantity(String groupName, String type, String startTime, String endTime) {
- List totalDispatchQuantityResponseList = retryTaskLogMapper.lineDispatchQuantity(groupName, null);
+ DateTypeEnum dateTypeEnum = DateTypeEnum.valueOf(type.toUpperCase());
- List successDispatchQuantityResponseList = retryTaskLogMapper.lineDispatchQuantity(groupName, RetryStatusEnum.FINISH.getLevel());
- Map dispatchQuantityResponseVOMap = successDispatchQuantityResponseList.stream().collect(Collectors.toMap(DispatchQuantityResponseVO::getCreateDt, i -> i));
+ LocalDateTime startDateTime = LocalDateTime.now();
+ if (StringUtils.isNotBlank(startTime)) {
+ startDateTime = LocalDateTime.parse(startTime, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+ }
+
+ LocalDateTime endDateTime = LocalDateTime.now();
+ if (StringUtils.isNotBlank(endTime)) {
+ endDateTime = LocalDateTime.parse(endTime, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+ }
+
+ startDateTime = dateTypeEnum.getStartTime().apply(startDateTime);
+ endDateTime = dateTypeEnum.getEndTime().apply(endDateTime);
+
+ List totalDispatchQuantityResponseList = retryTaskLogMapper.lineDispatchQuantity(groupName, null, type, startDateTime, endDateTime);
+
+ List successDispatchQuantityResponseList = retryTaskLogMapper.lineDispatchQuantity(groupName, RetryStatusEnum.FINISH.getLevel(), type, startDateTime, endDateTime);
+ Map successDispatchQuantityResponseVOMap = successDispatchQuantityResponseList.stream().collect(Collectors.toMap(DispatchQuantityResponseVO::getCreateDt, i -> i));
for (DispatchQuantityResponseVO dispatchQuantityResponseVO : totalDispatchQuantityResponseList) {
- DispatchQuantityResponseVO quantityResponseVO = dispatchQuantityResponseVOMap.get(dispatchQuantityResponseVO.getCreateDt());
+ DispatchQuantityResponseVO quantityResponseVO = successDispatchQuantityResponseVOMap.get(dispatchQuantityResponseVO.getCreateDt());
if (Objects.isNull(dispatchQuantityResponseVO)) {
dispatchQuantityResponseVO.setSuccess(0L);
} else {
@@ -103,6 +137,9 @@ public class DashBoardServiceImpl implements DashBoardService {
}
- return totalDispatchQuantityResponseList;
+ dateTypeEnum.getConsumer().accept(totalDispatchQuantityResponseList);
+
+ return totalDispatchQuantityResponseList.stream().sorted(Comparator.comparing(DispatchQuantityResponseVO::getCreateDt)).collect(Collectors.toList());
}
+
}
diff --git a/x-retry-server/src/main/java/com/x/retry/server/web/controller/DashBoardController.java b/x-retry-server/src/main/java/com/x/retry/server/web/controller/DashBoardController.java
index c0e82d1a3..847abb2a9 100644
--- a/x-retry-server/src/main/java/com/x/retry/server/web/controller/DashBoardController.java
+++ b/x-retry-server/src/main/java/com/x/retry/server/web/controller/DashBoardController.java
@@ -46,14 +46,21 @@ public class DashBoardController {
@LoginRequired
@GetMapping("/scene/rank")
public List rankSceneQuantity(@RequestParam(value = "groupName", required = false)
- String groupName) {
- return dashBoardService.rankSceneQuantity(groupName);
+ String groupName,
+ @RequestParam(value = "type") String type,
+ @RequestParam(value = "startTime", required = false) String startTime,
+ @RequestParam(value = "endTime", required = false) String endTime) {
+ return dashBoardService.rankSceneQuantity(groupName, type, startTime, endTime);
}
- @LoginRequired
+ // @LoginRequired
@GetMapping("/dispatch/line")
public List lineDispatchQuantity(@RequestParam(value = "groupName", required = false)
- String groupName) {
- return dashBoardService.lineDispatchQuantity(groupName);
+ String groupName,
+ @RequestParam(value = "type") String type,
+ @RequestParam(value = "startTime", required = false) String startTime,
+ @RequestParam(value = "endTime", required = false) String endTime
+ ) {
+ return dashBoardService.lineDispatchQuantity(groupName, type, startTime, endTime);
}
}
diff --git a/x-retry-server/src/main/java/com/x/retry/server/web/model/enums/DateTypeEnum.java b/x-retry-server/src/main/java/com/x/retry/server/web/model/enums/DateTypeEnum.java
new file mode 100644
index 000000000..5b727359e
--- /dev/null
+++ b/x-retry-server/src/main/java/com/x/retry/server/web/model/enums/DateTypeEnum.java
@@ -0,0 +1,171 @@
+package com.x.retry.server.web.model.enums;
+
+import com.x.retry.server.web.model.response.DispatchQuantityResponseVO;
+
+import java.time.DayOfWeek;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.TemporalAdjusters;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * @author: byteblogs
+ * @date: 2020/1/19 20:36
+ */
+public enum DateTypeEnum {
+ /**
+ * 天
+ */
+ DAY(dispatchQuantityResponseVOList -> {
+ Map dispatchQuantityResponseVOMap = dispatchQuantityResponseVOList.stream().collect(Collectors.toMap(DispatchQuantityResponseVO::getCreateDt, i -> i));
+ for (int i = 0; i < 24; i++) {
+
+ DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("HH");
+ String format = LocalDateTime.of(LocalDate.now(), LocalTime.MIN).plusHours(i).format(dateTimeFormatter);
+ DispatchQuantityResponseVO dispatchQuantityResponseVO = dispatchQuantityResponseVOMap.get(format);
+ if (Objects.isNull(dispatchQuantityResponseVO)) {
+ dispatchQuantityResponseVO = new DispatchQuantityResponseVO();
+ dispatchQuantityResponseVO.setFail(0L);
+ dispatchQuantityResponseVO.setSuccess(0L);
+ dispatchQuantityResponseVO.setCreateDt(format);
+ dispatchQuantityResponseVOList.add(dispatchQuantityResponseVO);
+ }
+ }
+ }, (startTime) -> {
+ return LocalDateTime.of(startTime.toLocalDate(), LocalTime.MIN);
+ }, (endTime) -> {
+ return LocalDateTime.of(endTime.toLocalDate(), LocalTime.MAX);
+ }),
+ /**
+ * 星期
+ */
+ WEEK(dispatchQuantityResponseVOList -> {
+ Map dispatchQuantityResponseVOMap = dispatchQuantityResponseVOList.stream().collect(Collectors.toMap(DispatchQuantityResponseVO::getCreateDt, i -> i));
+ for (int i = 0; i < 7; i++) {
+
+ DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+ String format = LocalDateTime.of(LocalDate.now().with(DayOfWeek.of(1)), LocalTime.MIN).plusDays(i).format(dateTimeFormatter);
+ DispatchQuantityResponseVO dispatchQuantityResponseVO = dispatchQuantityResponseVOMap.get(format);
+ if (Objects.isNull(dispatchQuantityResponseVO)) {
+ dispatchQuantityResponseVO = new DispatchQuantityResponseVO();
+ dispatchQuantityResponseVO.setFail(0L);
+ dispatchQuantityResponseVO.setSuccess(0L);
+ dispatchQuantityResponseVO.setCreateDt(format);
+ dispatchQuantityResponseVOList.add(dispatchQuantityResponseVO);
+ }
+ }
+ }, (startTime) -> {
+ return LocalDateTime.of(startTime.toLocalDate().with(DayOfWeek.of(1)), LocalTime.MIN);
+ }, (endTime) -> {
+ return LocalDateTime.of(endTime.toLocalDate().with(DayOfWeek.of(7)), LocalTime.MAX);
+ }),
+
+ /**
+ * 月
+ */
+ MONTH(dispatchQuantityResponseVOList -> {
+ Map dispatchQuantityResponseVOMap = dispatchQuantityResponseVOList.stream().collect(Collectors.toMap(DispatchQuantityResponseVO::getCreateDt, i -> i));
+ int curMonth = LocalDateTime.now().with(TemporalAdjusters.lastDayOfMonth()).getDayOfMonth();
+ for (int i = 0; i < curMonth; i++) {
+
+ DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+ String format = LocalDateTime.of(LocalDate.now().with(TemporalAdjusters.firstDayOfMonth()), LocalTime.MIN).plusDays(i).format(dateTimeFormatter);
+ DispatchQuantityResponseVO dispatchQuantityResponseVO = dispatchQuantityResponseVOMap.get(format);
+ if (Objects.isNull(dispatchQuantityResponseVO)) {
+ dispatchQuantityResponseVO = new DispatchQuantityResponseVO();
+ dispatchQuantityResponseVO.setFail(0L);
+ dispatchQuantityResponseVO.setSuccess(0L);
+ dispatchQuantityResponseVO.setCreateDt(format);
+ dispatchQuantityResponseVOList.add(dispatchQuantityResponseVO);
+ }
+ }
+ }, (startTime) -> {
+ return LocalDateTime.of(startTime.toLocalDate().with(TemporalAdjusters.firstDayOfMonth()), LocalTime.MIN);
+ }, (endTime) -> {
+ return LocalDateTime.of(endTime.toLocalDate().with(TemporalAdjusters.lastDayOfMonth()), LocalTime.MAX);
+ }),
+
+ /**
+ * 年
+ */
+ YEAR(dispatchQuantityResponseVOList -> {
+ Map dispatchQuantityResponseVOMap = dispatchQuantityResponseVOList.stream().collect(Collectors.toMap(DispatchQuantityResponseVO::getCreateDt, i -> i));
+ for (int i = 0; i < 12; i++) {
+
+ DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM");
+ String format = LocalDateTime.of(LocalDate.now().with(TemporalAdjusters.firstDayOfYear()), LocalTime.MIN).plusMonths(i).format(dateTimeFormatter);
+ DispatchQuantityResponseVO dispatchQuantityResponseVO = dispatchQuantityResponseVOMap.get(format);
+ if (Objects.isNull(dispatchQuantityResponseVO)) {
+ dispatchQuantityResponseVO = new DispatchQuantityResponseVO();
+ dispatchQuantityResponseVO.setFail(0L);
+ dispatchQuantityResponseVO.setSuccess(0L);
+ dispatchQuantityResponseVO.setCreateDt(format);
+ dispatchQuantityResponseVOList.add(dispatchQuantityResponseVO);
+ }
+ }
+ }, (startTime) -> {
+ return LocalDateTime.of(startTime.toLocalDate().with(TemporalAdjusters.firstDayOfYear()), LocalTime.MIN);
+ }, (endTime) -> {
+ return LocalDateTime.of(endTime.toLocalDate().with(TemporalAdjusters.lastDayOfYear()), LocalTime.MAX);
+ }),
+
+ /**
+ * 其他类型
+ */
+ OTHERS(dispatchQuantityResponseVOList -> {
+ Map dispatchQuantityResponseVOMap = dispatchQuantityResponseVOList.stream().collect(Collectors.toMap(DispatchQuantityResponseVO::getCreateDt, i -> i));
+ for (int i = 0; i < 24; i++) {
+
+ DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd 00:00:00");
+ String format = LocalDateTime.of(LocalDate.now(), LocalTime.MIN).plusHours(i).format(dateTimeFormatter);
+ DispatchQuantityResponseVO dispatchQuantityResponseVO = dispatchQuantityResponseVOMap.get(format);
+ if (Objects.isNull(dispatchQuantityResponseVO)) {
+ dispatchQuantityResponseVO = new DispatchQuantityResponseVO();
+ dispatchQuantityResponseVO.setFail(0L);
+ dispatchQuantityResponseVO.setSuccess(0L);
+ dispatchQuantityResponseVO.setCreateDt(format);
+ dispatchQuantityResponseVOList.add(dispatchQuantityResponseVO);
+ }
+ }
+ }, (startTime) -> {
+ if (Objects.isNull(startTime)) {
+ return LocalDateTime.now();
+ }
+ return startTime;
+ }, (endTime) -> {
+ if (Objects.isNull(endTime)) {
+ return LocalDateTime.now();
+ }
+ return endTime;
+ });
+
+ private Consumer> consumer;
+ private Function startTime;
+ private Function endTime;
+
+ DateTypeEnum(Consumer> listConsumer, Function startTime, Function endTime) {
+ this.consumer = listConsumer;
+ this.startTime = startTime;
+ this.endTime = endTime;
+
+ }
+
+ public Function getStartTime() {
+ return startTime;
+ }
+
+ public Function getEndTime() {
+ return endTime;
+ }
+
+ public Consumer> getConsumer() {
+ return consumer;
+ }
+}
diff --git a/x-retry-server/src/main/resources/mapper/RetryTaskLogMapper.xml b/x-retry-server/src/main/resources/mapper/RetryTaskLogMapper.xml
index 34aa13bde..c80ba8612 100644
--- a/x-retry-server/src/main/resources/mapper/RetryTaskLogMapper.xml
+++ b/x-retry-server/src/main/resources/mapper/RetryTaskLogMapper.xml
@@ -45,30 +45,52 @@
from (
select group_name, scene_name, biz_id, count(*)
from retry_task_log
- group by group_name, scene_name, biz_id) a
group_name = #{groupName}
+ and create_dt >= #{startTime} and create_dt <= #{endTime}
+ group by group_name, scene_name, biz_id) a
group by group_name, scene_name
order by total desc;