Pārlūkot izejas kodu

【feat】【v3】
1.完善代码逻辑

ChenYL 10 mēneši atpakaļ
vecāks
revīzija
d49d8a1cab

+ 2 - 2
src/main/java/com/punchsettle/server/pojo/op/StatPointsRequest.java → src/main/java/com/punchsettle/server/pojo/op/StatRequest.java

@@ -11,10 +11,10 @@ import lombok.Data;
  * @author tyuio
  * @version 1.0.0
  * @date 2025/5/8 20:04
- * @description 积分统计 请求
+ * @description 统计 请求
  */
 @Data
-public class StatPointsRequest {
+public class StatRequest {
 
     /**
      * 统计时间

+ 6 - 6
src/main/java/com/punchsettle/server/service/controller/OpController.java

@@ -2,8 +2,8 @@ package com.punchsettle.server.service.controller;
 
 import java.time.LocalDate;
 
-import com.punchsettle.server.pojo.op.StatPointsRequest;
-import com.punchsettle.server.task.StatPiTask;
+import com.punchsettle.server.pojo.op.StatRequest;
+import com.punchsettle.server.task.StatTask;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -126,16 +126,16 @@ public class OpController {
     /**
      * 统计打卡数据
      */
-    @GetMapping("statTask")
-    public void statTask() {
-        SpringUtils.getBean(StatPiTask.class).execute();
+    @PostMapping("statTask")
+    public void statTask(@RequestBody @Validated StatRequest request) {
+        SpringUtils.getBean(StatTask.class).statTask(request.getUserIds(), request.getStatTime());
     }
 
     /**
      * 统计积分
      */
     @PostMapping("statPoints")
-    public void statPoints(@RequestBody @Validated StatPointsRequest request) {
+    public void statPoints(@RequestBody @Validated StatRequest request) {
         SpringUtils.getBean(IStatManager.class).statPoints(request.getUserIds(), request.getStatTime());
     }
 }

+ 6 - 4
src/main/java/com/punchsettle/server/service/manager/impl/PunchInManagerImpl.java

@@ -538,7 +538,7 @@ public class PunchInManagerImpl implements IPunchInManager {
     }
 
     @Override
-    @Cacheable(cacheNames = CacheNameConstant.TASK_STAT, key = "T(com.punchsettle.server.utiis.UserUtils).getCurrentUserId()+'_'+#query.taskId+'_'+#query.statTime", condition = "#query.taskId != null && #query.statTime != null && !#query.statTime.isBlank()")
+//    @Cacheable(cacheNames = CacheNameConstant.TASK_STAT, key = "T(com.punchsettle.server.utiis.UserUtils).getCurrentUserId()+'_'+#query.taskId+'_'+#query.statTime", condition = "#query.taskId != null && #query.statTime != null && !#query.statTime.isBlank()")
     public PiTaskStatVO queryStat(PiTaskStatQuery query) {
         // 当前用户ID
         Long currentUserId = UserUtils.getCurrentUserId();
@@ -577,12 +577,14 @@ public class PunchInManagerImpl implements IPunchInManager {
         // 打卡任务ID-打卡任务对象关联
         Map<Long, PiTask> piTaskMap = piTasks.stream().collect(Collectors.toMap(PiTask::getId, Function.identity(), (key1, key2) -> key1));
 
-        String statTime = null;
+        // 统计范围的第一天
+        String statFirstTimeStr = null;
         if (StatPeriodEnum.MONTH.equals(query.getStatPeriod())) {
             String[] split = query.getStatTime().split("-");
-            statTime = String.format("%s-%s-01", split[0], split[1]);
+            statFirstTimeStr = String.format("%s-%s-01", split[0], split[1]);
         }
-        List<LocalDate> dateRangeInMonth = DateUtils.getDateRangeInMonth(LocalDate.parse(statTime));
+        LocalDate statFirstTime = LocalDate.parse(statFirstTimeStr);
+        List<LocalDate> dateRangeInMonth = DateUtils.getDateRange(statFirstTime, LocalDate.now());
         DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("MM-dd");
         String[] categories = dateRangeInMonth.stream().map(v -> dateTimeFormatter.format(v)).toArray(String[]::new);
         Integer[] lineSeriesData = piTaskHistories.stream().map(PiTaskHistory::getCountTrack).toArray(Integer[]::new);

+ 2 - 2
src/main/java/com/punchsettle/server/service/manager/impl/StatManagerImpl.java

@@ -140,8 +140,8 @@ public class StatManagerImpl implements IStatManager {
         for (String lineCategory : lineCategories) {
             StatPoints statPoints = statPointsMap.get(lineCategory);
             if (Objects.isNull(statPoints)) {
-                settlePointsList.add(null);
-                consumePointsList.add(null);
+                settlePointsList.add(0);
+                consumePointsList.add(0);
                 continue;
             }
             settlePointsList.add(statPoints.getSettlePoints());

+ 14 - 3
src/main/java/com/punchsettle/server/task/StatPiTask.java → src/main/java/com/punchsettle/server/task/StatTask.java

@@ -28,7 +28,7 @@ import lombok.extern.slf4j.Slf4j;
  */
 @Slf4j
 @Component
-public class StatPiTask {
+public class StatTask {
 
     @Autowired
     private IUserService userService;
@@ -59,6 +59,19 @@ public class StatPiTask {
 
         // 打卡日期
         LocalDate statTime = LocalDate.now().minusDays(1);
+
+        // 统计数据
+        statTask(userIds, statTime);
+
+        log.info("========== 打卡任务数据统计定时任务 开始执行 ==========");
+    }
+
+    /**
+     * 统计任务
+     * @param userIds
+     * @param statTime
+     */
+    public void statTask(List<Long> userIds, LocalDate statTime) {
         // 周日
         LocalDate firstDayOfWeek = DateUtils.getFirstDayOfWeek(statTime);
         // 周日
@@ -85,7 +98,5 @@ public class StatPiTask {
 
         // 清除缓存
         cacheManager.getCache(CacheNameConstant.TASK_STAT).clear();
-
-        log.info("========== 打卡任务数据统计定时任务 开始执行 ==========");
     }
 }