diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/mapper/StasSyncRecordMapper.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/mapper/StasSyncRecordMapper.java index 25a907c..1ef9ab1 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/mapper/StasSyncRecordMapper.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/mapper/StasSyncRecordMapper.java @@ -2,6 +2,10 @@ package org.jeecg.modules.base.mapper; import org.jeecg.modules.base.entity.StasSyncRecord; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.jeecg.modules.base.vo.TaskStatsVO; + +import java.util.Date; +import java.util.List; /** * @Description: 同步记录表 @@ -10,5 +14,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * @Version: V1.0 */ public interface StasSyncRecordMapper extends BaseMapper { - + List taskHistoryStats(); + List taskStatsDay(String startTime); + List taskStatsMonth(String startTime); } diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/mapper/xml/StasSyncRecordMapper.xml b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/mapper/xml/StasSyncRecordMapper.xml index 9aa7611..ad5ae76 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/mapper/xml/StasSyncRecordMapper.xml +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/mapper/xml/StasSyncRecordMapper.xml @@ -2,4 +2,54 @@ + + + + + + \ No newline at end of file diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/vo/TaskStatsVO.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/vo/TaskStatsVO.java new file mode 100644 index 0000000..6e4b412 --- /dev/null +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/vo/TaskStatsVO.java @@ -0,0 +1,11 @@ +package org.jeecg.modules.base.vo; + +import lombok.Data; + +@Data +public class TaskStatsVO { + private String id; + private String taskName; + private String dateTime; + private Long syncNum; +} diff --git a/jeecg-module-large-screen/src/main/java/org/jeecg/ocean/controller/OceanFeignController.java b/jeecg-module-large-screen/src/main/java/org/jeecg/ocean/controller/OceanFeignController.java index af8380f..081c599 100644 --- a/jeecg-module-large-screen/src/main/java/org/jeecg/ocean/controller/OceanFeignController.java +++ b/jeecg-module-large-screen/src/main/java/org/jeecg/ocean/controller/OceanFeignController.java @@ -48,8 +48,7 @@ public class OceanFeignController { Result> pageResult = objectMapper.readValue(getResult, new TypeReference<>() {}); // 检查响应是否成功 if (pageResult.getCode() == 200) { // 假设 200 表示成功,根据实际 API 文档调整 - IPage alarmRecordList = pageResult.getResult(); - return Result.OK(pageResult); + return pageResult; } else { return Result.error("API 请求失败, 错误码: " + pageResult.getCode() + ", 消息: " + pageResult.getMessage()); } diff --git a/jeecg-module-sync/src/main/java/org/jeecg/syncNum/controller/StasSyncNumController.java b/jeecg-module-sync/src/main/java/org/jeecg/syncNum/controller/StasSyncNumController.java index 2cd7b3c..7ef676d 100644 --- a/jeecg-module-sync/src/main/java/org/jeecg/syncNum/controller/StasSyncNumController.java +++ b/jeecg-module-sync/src/main/java/org/jeecg/syncNum/controller/StasSyncNumController.java @@ -38,14 +38,14 @@ public class StasSyncNumController extends JeecgController> queryPageList(StasSyncNum stasSyncNum, HttpServletRequest req) { diff --git a/jeecg-module-sync/src/main/java/org/jeecg/syncRecord/controller/StasSyncRecordController.java b/jeecg-module-sync/src/main/java/org/jeecg/syncRecord/controller/StasSyncRecordController.java index 00d12cc..c69e5e2 100644 --- a/jeecg-module-sync/src/main/java/org/jeecg/syncRecord/controller/StasSyncRecordController.java +++ b/jeecg-module-sync/src/main/java/org/jeecg/syncRecord/controller/StasSyncRecordController.java @@ -110,4 +110,35 @@ public class StasSyncRecordController extends JeecgController taskHisSta() { + return Result.OK(stasSyncRecordService.taskHisStats()); + } + + /** + * 按日统计最近一个月同步数量 + * @return + */ + @Operation(summary = "同步记录表-按日统计最近一个月同步数量") + @GetMapping(value = "/taskStatsDay") + public Result taskStatsDay() { + return Result.OK(stasSyncRecordService.taskStatsDay()); + } + + /** + * 按月统计最近一年同步数量 + * @return + */ + @Operation(summary = "同步记录表-按月统计最近一年同步数量") + @GetMapping(value = "/taskStatsMonth") + public Result taskStatsMonth() { + return Result.OK(stasSyncRecordService.taskStatsMonth()); + } + } diff --git a/jeecg-module-sync/src/main/java/org/jeecg/syncRecord/service/IStasSyncRecordService.java b/jeecg-module-sync/src/main/java/org/jeecg/syncRecord/service/IStasSyncRecordService.java index 339a067..af64a4a 100644 --- a/jeecg-module-sync/src/main/java/org/jeecg/syncRecord/service/IStasSyncRecordService.java +++ b/jeecg-module-sync/src/main/java/org/jeecg/syncRecord/service/IStasSyncRecordService.java @@ -2,6 +2,10 @@ package org.jeecg.syncRecord.service; import org.jeecg.modules.base.entity.StasSyncRecord; import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.syncRecord.vo.TaskHisStatsVO; +import org.jeecg.syncRecord.vo.TaskStatsResultVO; + +import java.util.List; /** * @Description: 同步记录表 @@ -11,4 +15,8 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface IStasSyncRecordService extends IService { + List taskHisStats(); + TaskStatsResultVO taskStatsDay(); + TaskStatsResultVO taskStatsMonth(); + } diff --git a/jeecg-module-sync/src/main/java/org/jeecg/syncRecord/service/impl/StasSyncRecordServiceImpl.java b/jeecg-module-sync/src/main/java/org/jeecg/syncRecord/service/impl/StasSyncRecordServiceImpl.java index 193927d..ab3fe7e 100644 --- a/jeecg-module-sync/src/main/java/org/jeecg/syncRecord/service/impl/StasSyncRecordServiceImpl.java +++ b/jeecg-module-sync/src/main/java/org/jeecg/syncRecord/service/impl/StasSyncRecordServiceImpl.java @@ -1,12 +1,22 @@ package org.jeecg.syncRecord.service.impl; +import lombok.RequiredArgsConstructor; +import org.jeecg.common.util.DateUtils; import org.jeecg.modules.base.entity.StasSyncRecord; import org.jeecg.modules.base.mapper.StasSyncRecordMapper; +import org.jeecg.modules.base.vo.TaskStatsVO; import org.jeecg.syncRecord.service.IStasSyncRecordService; +import org.jeecg.syncRecord.vo.TaskHisStatsVO; +import org.jeecg.syncRecord.vo.TaskStatsResultVO; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.stream.Collectors; + /** * @Description: 同步记录表 * @Author: jeecg-boot @@ -14,6 +24,108 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; * @Version: V1.0 */ @Service +@RequiredArgsConstructor public class StasSyncRecordServiceImpl extends ServiceImpl implements IStasSyncRecordService { + @Override + public List taskHisStats() { + List taskStatsVOS = this.baseMapper.taskHistoryStats(); + Map resultMap = new HashMap<>(); + + for (TaskStatsVO vo : taskStatsVOS) { + String id = vo.getId(); + TaskHisStatsVO hisStatsVO = resultMap.get(id); + + if (hisStatsVO == null) { + hisStatsVO = new TaskHisStatsVO(); + hisStatsVO.setTaskName(vo.getTaskName()); + hisStatsVO.setSyncNum(vo.getSyncNum()); + resultMap.put(id, hisStatsVO); + } else { + hisStatsVO.setSyncNum(hisStatsVO.getSyncNum() + vo.getSyncNum()); + } + } + + return new ArrayList<>(resultMap.values()); + } + + @Override + public TaskStatsResultVO taskStatsDay() { + TaskStatsResultVO taskStatsResultVO = new TaskStatsResultVO(); + taskStatsResultVO.setDateTimes(getLastMonthDates()); + + LocalDate today = LocalDate.now(); + LocalDate monthDate = today.minusMonths(1); + String oneMonthAgo = monthDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + List taskStatsVOS = this.baseMapper.taskStatsDay(oneMonthAgo); + + Map> groupedByTaskName = taskStatsVOS.stream() + .collect(Collectors.groupingBy(TaskStatsVO::getTaskName)); + + List taskStatsInfos = new ArrayList<>(); + for (String taskName : groupedByTaskName.keySet()) { + TaskStatsResultVO.TaskStatsInfo taskStatsInfo = new TaskStatsResultVO.TaskStatsInfo(); + taskStatsInfo.setTaskName(taskName); + taskStatsInfo.setTaskStats(groupedByTaskName.get(taskName)); + taskStatsInfos.add(taskStatsInfo); + } + taskStatsResultVO.setTaskStatsInfos(taskStatsInfos); + return taskStatsResultVO; + } + + @Override + public TaskStatsResultVO taskStatsMonth() { + TaskStatsResultVO taskStatsResultVO = new TaskStatsResultVO(); + taskStatsResultVO.setDateTimes(getLastYearMonthDates()); + + LocalDate today = LocalDate.now(); + LocalDate monthDate = today.minusMonths(11);; + String oneMonthAgo = monthDate.format(DateTimeFormatter.ofPattern("yyyy-MM-01")); + List taskStatsVOS = this.baseMapper.taskStatsMonth(oneMonthAgo); + + Map> groupedByTaskName = taskStatsVOS.stream() + .collect(Collectors.groupingBy(TaskStatsVO::getTaskName)); + + List taskStatsInfos = new ArrayList<>(); + for (String taskName : groupedByTaskName.keySet()) { + TaskStatsResultVO.TaskStatsInfo taskStatsInfo = new TaskStatsResultVO.TaskStatsInfo(); + taskStatsInfo.setTaskName(taskName); + taskStatsInfo.setTaskStats(groupedByTaskName.get(taskName)); + taskStatsInfos.add(taskStatsInfo); + } + taskStatsResultVO.setTaskStatsInfos(taskStatsInfos); + return taskStatsResultVO; + } + + + public static List getLastMonthDates() { + List dateList = new ArrayList<>(); + LocalDate today = LocalDate.now(); + LocalDate oneMonthAgo = today.minusMonths(1); + + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + + // 从一个月前到今天,包含开始和结束日期 + LocalDate currentDate = oneMonthAgo; + while (!currentDate.isAfter(today)) { + dateList.add(currentDate.format(formatter)); + currentDate = currentDate.plusDays(1); + } + + return dateList; + } + + public static List getLastYearMonthDates() { + List monthList = new ArrayList<>(); + LocalDate today = LocalDate.now(); + + // 包含当月,所以从11个月前开始 + for (int i = 11; i >= 0; i--) { + LocalDate monthDate = today.minusMonths(i); + String monthStr = monthDate.format(DateTimeFormatter.ofPattern("yyyy-MM")); + monthList.add(monthStr); + } + + return monthList; + } } diff --git a/jeecg-module-sync/src/main/java/org/jeecg/syncRecord/vo/TaskHisStatsVO.java b/jeecg-module-sync/src/main/java/org/jeecg/syncRecord/vo/TaskHisStatsVO.java new file mode 100644 index 0000000..26c8cdf --- /dev/null +++ b/jeecg-module-sync/src/main/java/org/jeecg/syncRecord/vo/TaskHisStatsVO.java @@ -0,0 +1,9 @@ +package org.jeecg.syncRecord.vo; + +import lombok.Data; + +@Data +public class TaskHisStatsVO { + private String taskName; + private Long syncNum; +} diff --git a/jeecg-module-sync/src/main/java/org/jeecg/syncRecord/vo/TaskStatsResultVO.java b/jeecg-module-sync/src/main/java/org/jeecg/syncRecord/vo/TaskStatsResultVO.java new file mode 100644 index 0000000..ea0bf7c --- /dev/null +++ b/jeecg-module-sync/src/main/java/org/jeecg/syncRecord/vo/TaskStatsResultVO.java @@ -0,0 +1,19 @@ +package org.jeecg.syncRecord.vo; + +import lombok.Data; +import org.jeecg.modules.base.vo.TaskStatsVO; + +import java.util.List; + +@Data +public class TaskStatsResultVO { + List dateTimes; + List taskStatsInfos; + + @Data + public static class TaskStatsInfo{ + String taskName; + List taskStats; + } + +}