同步统计
This commit is contained in:
parent
ef75e3988a
commit
04e3a8b9cf
|
|
@ -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<StasSyncRecord> {
|
||||
|
||||
List<TaskStatsVO> taskHistoryStats();
|
||||
List<TaskStatsVO> taskStatsDay(String startTime);
|
||||
List<TaskStatsVO> taskStatsMonth(String startTime);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,4 +2,54 @@
|
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.jeecg.modules.base.mapper.StasSyncRecordMapper">
|
||||
|
||||
<select id="taskHistoryStats" resultType="org.jeecg.modules.base.vo.TaskStatsVO">
|
||||
SELECT
|
||||
ta.id id,
|
||||
ta.task_name taskName,
|
||||
r.start_time dateTime,
|
||||
n.sync_num syncNum
|
||||
FROM
|
||||
stas_task_config ta
|
||||
JOIN stas_sync_record r ON ta.id = r.task_id
|
||||
JOIN stas_sync_num n ON r.id = n.record_id
|
||||
</select>
|
||||
|
||||
<select id="taskStatsDay" parameterType="java.lang.String" resultType="org.jeecg.modules.base.vo.TaskStatsVO">
|
||||
SELECT
|
||||
ta.id as id,
|
||||
ta.task_name as taskName,
|
||||
TO_CHAR(r.start_time, 'YYYY-MM-DD') as dateTime,
|
||||
sum(n.sync_num) as syncNum
|
||||
FROM
|
||||
stas_task_config ta
|
||||
JOIN stas_sync_record r ON ta.id = r.task_id
|
||||
LEFT JOIN stas_sync_num n ON r.id = n.record_id
|
||||
<where>
|
||||
<if test="startTime != null">
|
||||
AND r.start_time >= #{startTime}
|
||||
</if>
|
||||
</where>
|
||||
GROUP BY ta.id, ta.task_name, TO_CHAR(r.start_time, 'YYYY-MM-DD')
|
||||
ORDER BY TO_CHAR(r.start_time, 'YYYY-MM-DD'), ta.task_name
|
||||
</select>
|
||||
|
||||
<select id="taskStatsMonth" parameterType="java.lang.String" resultType="org.jeecg.modules.base.vo.TaskStatsVO">
|
||||
SELECT
|
||||
ta.id as id,
|
||||
ta.task_name as taskName,
|
||||
TO_CHAR(r.start_time, 'YYYY-MM') as dateTime, -- 改为按月统计
|
||||
sum(n.sync_num) as syncNum
|
||||
FROM
|
||||
stas_task_config ta
|
||||
JOIN stas_sync_record r ON ta.id = r.task_id
|
||||
LEFT JOIN stas_sync_num n ON r.id = n.record_id
|
||||
<where>
|
||||
<if test="startTime != null">
|
||||
AND r.start_time >= #{startTime}
|
||||
</if>
|
||||
</where>
|
||||
GROUP BY ta.id, ta.task_name, TO_CHAR(r.start_time, 'YYYY-MM')
|
||||
ORDER BY TO_CHAR(r.start_time, 'YYYY-MM') DESC, ta.task_name
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -48,8 +48,7 @@ public class OceanFeignController {
|
|||
Result<Page<AlarmRecord>> pageResult = objectMapper.readValue(getResult, new TypeReference<>() {});
|
||||
// 检查响应是否成功
|
||||
if (pageResult.getCode() == 200) { // 假设 200 表示成功,根据实际 API 文档调整
|
||||
IPage<AlarmRecord> alarmRecordList = pageResult.getResult();
|
||||
return Result.OK(pageResult);
|
||||
return pageResult;
|
||||
} else {
|
||||
return Result.error("API 请求失败, 错误码: " + pageResult.getCode() + ", 消息: " + pageResult.getMessage());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,14 +38,14 @@ public class StasSyncNumController extends JeecgController<StasSyncNum, IStasSyn
|
|||
private IStasSyncNumService stasSyncNumService;
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
* 任务按表饼图统计
|
||||
*
|
||||
* @param stasSyncNum
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "同步数量-分页列表查询")
|
||||
@Operation(summary = "同步数量-分页列表查询")
|
||||
@Operation(summary = "同步数量-任务按表饼图统计")
|
||||
@GetMapping(value = "/list")
|
||||
public Result<List<PieChartVO>> queryPageList(StasSyncNum stasSyncNum,
|
||||
HttpServletRequest req) {
|
||||
|
|
|
|||
|
|
@ -110,4 +110,35 @@ public class StasSyncRecordController extends JeecgController<StasSyncRecord, IS
|
|||
return Result.OK(resultPage);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 历史同步数量统计
|
||||
* @return
|
||||
*/
|
||||
@Operation(summary = "同步记录表-任务历史同步数量统计")
|
||||
@GetMapping(value = "/taskHisSta")
|
||||
public Result<?> 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());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<StasSyncRecord> {
|
||||
|
||||
List<TaskHisStatsVO> taskHisStats();
|
||||
TaskStatsResultVO taskStatsDay();
|
||||
TaskStatsResultVO taskStatsMonth();
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<StasSyncRecordMapper, StasSyncRecord> implements IStasSyncRecordService {
|
||||
|
||||
@Override
|
||||
public List<TaskHisStatsVO> taskHisStats() {
|
||||
List<TaskStatsVO> taskStatsVOS = this.baseMapper.taskHistoryStats();
|
||||
Map<String, TaskHisStatsVO> 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<TaskStatsVO> taskStatsVOS = this.baseMapper.taskStatsDay(oneMonthAgo);
|
||||
|
||||
Map<String, List<TaskStatsVO>> groupedByTaskName = taskStatsVOS.stream()
|
||||
.collect(Collectors.groupingBy(TaskStatsVO::getTaskName));
|
||||
|
||||
List<TaskStatsResultVO.TaskStatsInfo> 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<TaskStatsVO> taskStatsVOS = this.baseMapper.taskStatsMonth(oneMonthAgo);
|
||||
|
||||
Map<String, List<TaskStatsVO>> groupedByTaskName = taskStatsVOS.stream()
|
||||
.collect(Collectors.groupingBy(TaskStatsVO::getTaskName));
|
||||
|
||||
List<TaskStatsResultVO.TaskStatsInfo> 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<String> getLastMonthDates() {
|
||||
List<String> 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<String> getLastYearMonthDates() {
|
||||
List<String> 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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
package org.jeecg.syncRecord.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class TaskHisStatsVO {
|
||||
private String taskName;
|
||||
private Long syncNum;
|
||||
}
|
||||
|
|
@ -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<String> dateTimes;
|
||||
List<TaskStatsInfo> taskStatsInfos;
|
||||
|
||||
@Data
|
||||
public static class TaskStatsInfo{
|
||||
String taskName;
|
||||
List<TaskStatsVO> taskStats;
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user