diff --git a/frontend/src/components/Charts/Line.vue b/frontend/src/components/Charts/Line.vue
index d4b1c744..78fd7514 100644
--- a/frontend/src/components/Charts/Line.vue
+++ b/frontend/src/components/Charts/Line.vue
@@ -7,6 +7,7 @@
 <script>
 import * as G2 from '@antv/g2'
 import { getLineDispatchQuantity } from '@/api/manage'
+
 const DataSet = require('@antv/data-set')
 
 export default {
@@ -22,8 +23,13 @@ export default {
     this.createView()
   },
   methods: {
-    getLineDispatchQuantity () {
-      getLineDispatchQuantity().then(res => {
+    getLineDispatchQuantity (groupName, type = 'day', startTime, endTime) {
+      getLineDispatchQuantity({
+        'groupName': groupName,
+        'type': type,
+        'startTime': startTime,
+        'endTime': endTime
+      }).then(res => {
         this.viewCharts(res.data)
       })
     },
@@ -36,7 +42,7 @@ export default {
         fields: ['success', 'fail'], // 展开字段集
         key: 'name',
         value: 'viewTotal',
-        retains: [ 'total', 'createDt' ]
+        retains: ['total', 'createDt']
       })
 
       console.log(dv.rows)
diff --git a/frontend/src/views/dashboard/Analysis.vue b/frontend/src/views/dashboard/Analysis.vue
index 088e743c..c585e2cf 100644
--- a/frontend/src/views/dashboard/Analysis.vue
+++ b/frontend/src/views/dashboard/Analysis.vue
@@ -51,13 +51,13 @@
         <a-tabs default-active-key="1" size="large" :tab-bar-style="{marginBottom: '24px', paddingLeft: '16px'}">
           <div class="extra-wrapper" slot="tabBarExtraContent">
             <div class="extra-item">
-              <a>{{ $t('dashboard.analysis.all-day') }}</a>
-              <a>{{ $t('dashboard.analysis.all-week') }}</a>
-              <a>{{ $t('dashboard.analysis.all-month') }}</a>
-              <a>{{ $t('dashboard.analysis.all-year') }}</a>
+              <a href="#" @click="dataHandler('day')">{{ $t('dashboard.analysis.all-day') }}</a>
+              <a href="#" @click="dataHandler('week')">{{ $t('dashboard.analysis.all-week') }}</a>
+              <a href="#" @click="dataHandler('month')">{{ $t('dashboard.analysis.all-month') }}</a>
+              <a href="#" @click="dataHandler('year')">{{ $t('dashboard.analysis.all-year') }}</a>
             </div>
             <div class="extra-item">
-              <a-range-picker :style="{width: '256px'}" />
+              <a-range-picker :style="{width: '256px'}" @change="dateChange" />
             </div>
             <a-select placeholder="请输入组名称" @change="value => handleChange(value)" :style="{width: '256px'}">
               <a-select-option v-for="item in groupNameList" :value="item" :key="item">{{ item }}</a-select-option>
@@ -66,10 +66,10 @@
           <a-tab-pane loading="true" :tab="$t('dashboard.analysis.sales')" key="1">
             <a-row>
               <a-col :xl="16" :lg="12" :md="12" :sm="24" :xs="24">
-                <g2-line/>
+                <g2-line ref="viewChart" />
               </a-col>
               <a-col :xl="8" :lg="12" :md="12" :sm="24" :xs="24">
-                <rank-list :title="$t('dashboard.analysis.sales-ranking')" :list="rankList"/>
+                <rank-list :title="$t('dashboard.analysis.sales-ranking')" :list="rankList" />
               </a-col>
             </a-row>
           </a-tab-pane>
@@ -80,7 +80,6 @@
 </template>
 
 <script>
-// import moment from 'moment'
 import {
   ChartCard,
   MiniArea,
@@ -132,12 +131,40 @@ export default {
       pieStyle: {
         stroke: '#fff',
         lineWidth: 1
-      }
+      },
+      value: ''
     }
   },
-  computed: {
-  },
+  computed: {},
   methods: {
+    dataHandler (type) {
+      this.$refs.viewChart.getLineDispatchQuantity(this.value, type)
+      this.getRankSceneQuantity(this.value, type)
+    },
+    handleChange (value) {
+      this.value = value
+      this.$refs.viewChart.getLineDispatchQuantity(value)
+      this.getRankSceneQuantity(this.value)
+    },
+    dateChange (date, dateString) {
+      this.$refs.viewChart.getLineDispatchQuantity('others', new Date(dateString[0]).getTime(), new Date(dateString[1]).getTime())
+      this.getRankSceneQuantity(this.value, new Date(dateString[0]).getTime(), new Date(dateString[1]).getTime())
+    },
+    getRankSceneQuantity (groupName, type = 'day', startTime, endTime) {
+      rankSceneQuantity({
+        'groupName': groupName,
+        'type': type,
+        'startTime': startTime,
+        'endTime': endTime
+      }).then(res => {
+        res.data.forEach(res => {
+          this.rankList.push({
+            name: res.groupName + '/' + res.sceneName,
+            total: res.total
+          })
+        })
+      })
+    }
   },
   created () {
     getAllGroupNameList().then(res => {
@@ -156,15 +183,6 @@ export default {
       this.countActivePodQuantity = res.data
     })
 
-    rankSceneQuantity().then(res => {
-      res.data.forEach(res => {
-        this.rankList.push({
-          name: res.groupName + '/' + res.sceneName,
-          total: res.total
-        })
-      })
-    })
-
     setTimeout(() => {
       this.loading = !this.loading
     }, 1000)
@@ -172,47 +190,49 @@ export default {
 }
 </script>
 
-<style lang="less" scoped>
-  .extra-wrapper {
-    line-height: 55px;
-    padding-right: 24px;
+<style lang='less' scoped>
+.extra-wrapper {
+  line-height: 55px;
+  padding-right: 24px;
 
-    .extra-item {
-      display: inline-block;
-      margin-right: 24px;
+  .extra-item {
+    display: inline-block;
+    margin-right: 24px;
 
-      a {
-        margin-left: 24px;
-      }
+    a {
+      margin-left: 24px;
     }
   }
+}
 
-  .antd-pro-pages-dashboard-analysis-twoColLayout {
+.antd-pro-pages-dashboard-analysis-twoColLayout {
+  position: relative;
+  display: flex;
+  display: block;
+  flex-flow: row wrap;
+}
+
+.antd-pro-pages-dashboard-analysis-salesCard {
+  height: calc(100% - 24px);
+
+  /deep/ .ant-card-head {
     position: relative;
-    display: flex;
-    display: block;
-    flex-flow: row wrap;
   }
+}
 
-  .antd-pro-pages-dashboard-analysis-salesCard {
-    height: calc(100% - 24px);
-    /deep/ .ant-card-head {
-      position: relative;
-    }
+.dashboard-analysis-iconGroup {
+  i {
+    margin-left: 16px;
+    color: rgba(0, 0, 0, .45);
+    cursor: pointer;
+    transition: color .32s;
+    color: black;
   }
+}
 
-  .dashboard-analysis-iconGroup {
-    i {
-      margin-left: 16px;
-      color: rgba(0,0,0,.45);
-      cursor: pointer;
-      transition: color .32s;
-      color: black;
-    }
-  }
-  .analysis-salesTypeRadio {
-    position: absolute;
-    right: 54px;
-    bottom: 12px;
-  }
+.analysis-salesTypeRadio {
+  position: absolute;
+  right: 54px;
+  bottom: 12px;
+}
 </style>
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 551fcece..da91ee6d 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<RetryTaskLog> {
@@ -19,9 +20,16 @@ public interface RetryTaskLogMapper extends BaseMapper<RetryTaskLog> {
 
     long countTaskByRetryStatus(@Param("retryStatus") Integer retryStatus);
 
-    List<SceneQuantityRankResponseVO> rankSceneQuantity(@Param("groupName") String groupName);
+    List<SceneQuantityRankResponseVO> rankSceneQuantity(@Param("groupName") String groupName,
+                                                        @Param("startTime")LocalDateTime startTime,
+                                                        @Param("endTime")LocalDateTime endTime
+                                                        );
 
     List<DispatchQuantityResponseVO> 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 08f69ca3..154f7099 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<SceneQuantityRankResponseVO> rankSceneQuantity(String groupName);
+    List<SceneQuantityRankResponseVO> rankSceneQuantity(String groupName, String type, String startTime, String endTime);
 
-    List<DispatchQuantityResponseVO> lineDispatchQuantity(String groupName);
+    List<DispatchQuantityResponseVO> 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 dedf79e3..97cc60c3 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<SceneQuantityRankResponseVO> rankSceneQuantity(String groupName) {
-        return retryTaskLogMapper.rankSceneQuantity(groupName);
+    public List<SceneQuantityRankResponseVO> 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<DispatchQuantityResponseVO> lineDispatchQuantity(String groupName) {
+    public List<DispatchQuantityResponseVO> lineDispatchQuantity(String groupName, String type, String startTime, String endTime) {
 
-        List<DispatchQuantityResponseVO> totalDispatchQuantityResponseList = retryTaskLogMapper.lineDispatchQuantity(groupName, null);
+        DateTypeEnum dateTypeEnum = DateTypeEnum.valueOf(type.toUpperCase());
 
-        List<DispatchQuantityResponseVO> successDispatchQuantityResponseList = retryTaskLogMapper.lineDispatchQuantity(groupName, RetryStatusEnum.FINISH.getLevel());
-        Map<String, DispatchQuantityResponseVO> 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<DispatchQuantityResponseVO> totalDispatchQuantityResponseList = retryTaskLogMapper.lineDispatchQuantity(groupName, null, type, startDateTime, endDateTime);
+
+        List<DispatchQuantityResponseVO> successDispatchQuantityResponseList = retryTaskLogMapper.lineDispatchQuantity(groupName, RetryStatusEnum.FINISH.getLevel(), type, startDateTime, endDateTime);
+        Map<String, DispatchQuantityResponseVO> 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 c0e82d1a..847abb2a 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<SceneQuantityRankResponseVO> 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<DispatchQuantityResponseVO> 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 00000000..5b727359
--- /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<String, DispatchQuantityResponseVO> 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<String, DispatchQuantityResponseVO> 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<String, DispatchQuantityResponseVO> 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<String, DispatchQuantityResponseVO> 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<String, DispatchQuantityResponseVO> 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<List<DispatchQuantityResponseVO>> consumer;
+    private Function<LocalDateTime, LocalDateTime> startTime;
+    private Function<LocalDateTime, LocalDateTime> endTime;
+
+    DateTypeEnum(Consumer<List<DispatchQuantityResponseVO>> listConsumer, Function<LocalDateTime, LocalDateTime> startTime, Function<LocalDateTime, LocalDateTime> endTime) {
+        this.consumer = listConsumer;
+        this.startTime = startTime;
+        this.endTime = endTime;
+
+    }
+
+    public Function<LocalDateTime, LocalDateTime> getStartTime() {
+        return startTime;
+    }
+
+    public Function<LocalDateTime, LocalDateTime> getEndTime() {
+        return endTime;
+    }
+
+    public Consumer<List<DispatchQuantityResponseVO>> 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 34aa13bd..c80ba861 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
         <where>
             <if test="groupName != '' and groupName != null">
                 group_name = #{groupName}
             </if>
+            and create_dt >= #{startTime} and create_dt &lt;= #{endTime}
         </where>
+        group by group_name, scene_name, biz_id) a
         group by group_name, scene_name
         order by total desc;
     </select>
     <select id="lineDispatchQuantity"
             resultType="com.x.retry.server.web.model.response.DispatchQuantityResponseVO">
-        select distinct(create_dt), count(*) total
+        select
+        distinct(create_dt), count(*) total
         from (
-                 select group_name, scene_name, biz_id, DATE_FORMAT(create_dt, '%Y-%m-%d') as create_dt, count(*)
-                 from retry_task_log
-                 <where>
-                     <if test="groupName != '' and groupName != null">
-                         group_name = #{groupName}
-                     </if>
-                     <if test="retryStatus!=null ">
-                         retry_status = #{retryStatus}
-                     </if>
-                 </where>
-                 group by group_name, scene_name, biz_id, create_dt) a
+        select group_name, scene_name, biz_id,
+        <choose>
+            <when test="type == 'day'">
+                DATE_FORMAT(create_dt,'%H')
+            </when>
+            <when test="type == 'week'">
+                DATE_FORMAT(create_dt,'%Y-%m-%d')
+            </when>
+            <when test="type =='month'">
+                DATE_FORMAT(create_dt,'%Y-%m-%d')
+            </when>
+            <when test="type == 'year'">
+                DATE_FORMAT(create_dt,'%Y-%m')
+            </when>
+            <otherwise>
+                DATE_FORMAT(create_dt,'%Y-%m-%d')
+            </otherwise>
+        </choose>
+        as create_dt, count(*)
+        from retry_task_log
+        <where>
+            <if test="groupName != '' and groupName != null">
+                group_name = #{groupName}
+            </if>
+            <if test="retryStatus!=null ">
+               and retry_status = #{retryStatus}
+            </if>
+
+            and create_dt >= #{startTime} and create_dt &lt;= #{endTime}
+        </where>
+        group by group_name, scene_name, biz_id, create_dt) a
         group by create_dt
         order by total desc;
     </select>