Compare commits
2 Commits
154c3ad206
...
732d912314
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
732d912314 | ||
|
|
04e3a8b9cf |
|
|
@ -2,6 +2,10 @@ package org.jeecg.modules.base.mapper;
|
||||||
|
|
||||||
import org.jeecg.modules.base.entity.StasSyncRecord;
|
import org.jeecg.modules.base.entity.StasSyncRecord;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import org.jeecg.modules.base.vo.TaskStatsVO;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 同步记录表
|
* @Description: 同步记录表
|
||||||
|
|
@ -10,5 +14,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
* @Version: V1.0
|
* @Version: V1.0
|
||||||
*/
|
*/
|
||||||
public interface StasSyncRecordMapper extends BaseMapper<StasSyncRecord> {
|
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">
|
<!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">
|
<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>
|
</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<>() {});
|
Result<Page<AlarmRecord>> pageResult = objectMapper.readValue(getResult, new TypeReference<>() {});
|
||||||
// 检查响应是否成功
|
// 检查响应是否成功
|
||||||
if (pageResult.getCode() == 200) { // 假设 200 表示成功,根据实际 API 文档调整
|
if (pageResult.getCode() == 200) { // 假设 200 表示成功,根据实际 API 文档调整
|
||||||
IPage<AlarmRecord> alarmRecordList = pageResult.getResult();
|
return pageResult;
|
||||||
return Result.OK(pageResult);
|
|
||||||
} else {
|
} else {
|
||||||
return Result.error("API 请求失败, 错误码: " + pageResult.getCode() + ", 消息: " + pageResult.getMessage());
|
return Result.error("API 请求失败, 错误码: " + pageResult.getCode() + ", 消息: " + pageResult.getMessage());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,14 +38,14 @@ public class StasSyncNumController extends JeecgController<StasSyncNum, IStasSyn
|
||||||
private IStasSyncNumService stasSyncNumService;
|
private IStasSyncNumService stasSyncNumService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页列表查询
|
* 任务按表饼图统计
|
||||||
*
|
*
|
||||||
* @param stasSyncNum
|
* @param stasSyncNum
|
||||||
* @param req
|
* @param req
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
//@AutoLog(value = "同步数量-分页列表查询")
|
//@AutoLog(value = "同步数量-分页列表查询")
|
||||||
@Operation(summary = "同步数量-分页列表查询")
|
@Operation(summary = "同步数量-任务按表饼图统计")
|
||||||
@GetMapping(value = "/list")
|
@GetMapping(value = "/list")
|
||||||
public Result<List<PieChartVO>> queryPageList(StasSyncNum stasSyncNum,
|
public Result<List<PieChartVO>> queryPageList(StasSyncNum stasSyncNum,
|
||||||
HttpServletRequest req) {
|
HttpServletRequest req) {
|
||||||
|
|
|
||||||
|
|
@ -110,4 +110,35 @@ public class StasSyncRecordController extends JeecgController<StasSyncRecord, IS
|
||||||
return Result.OK(resultPage);
|
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 org.jeecg.modules.base.entity.StasSyncRecord;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import org.jeecg.syncRecord.vo.TaskHisStatsVO;
|
||||||
|
import org.jeecg.syncRecord.vo.TaskStatsResultVO;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 同步记录表
|
* @Description: 同步记录表
|
||||||
|
|
@ -11,4 +15,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
*/
|
*/
|
||||||
public interface IStasSyncRecordService extends IService<StasSyncRecord> {
|
public interface IStasSyncRecordService extends IService<StasSyncRecord> {
|
||||||
|
|
||||||
|
List<TaskHisStatsVO> taskHisStats();
|
||||||
|
TaskStatsResultVO taskStatsDay();
|
||||||
|
TaskStatsResultVO taskStatsMonth();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,22 @@
|
||||||
package org.jeecg.syncRecord.service.impl;
|
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.entity.StasSyncRecord;
|
||||||
import org.jeecg.modules.base.mapper.StasSyncRecordMapper;
|
import org.jeecg.modules.base.mapper.StasSyncRecordMapper;
|
||||||
|
import org.jeecg.modules.base.vo.TaskStatsVO;
|
||||||
import org.jeecg.syncRecord.service.IStasSyncRecordService;
|
import org.jeecg.syncRecord.service.IStasSyncRecordService;
|
||||||
|
import org.jeecg.syncRecord.vo.TaskHisStatsVO;
|
||||||
|
import org.jeecg.syncRecord.vo.TaskStatsResultVO;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
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: 同步记录表
|
* @Description: 同步记录表
|
||||||
* @Author: jeecg-boot
|
* @Author: jeecg-boot
|
||||||
|
|
@ -14,6 +24,108 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
* @Version: V1.0
|
* @Version: V1.0
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
public class StasSyncRecordServiceImpl extends ServiceImpl<StasSyncRecordMapper, StasSyncRecord> implements IStasSyncRecordService {
|
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