feat: 3.2.0
新增重试日志查询接口
This commit is contained in:
parent
0cd93d7b9f
commit
3fbe484724
@ -36,7 +36,7 @@ public class RetryTaskLogController {
|
||||
|
||||
@LoginRequired
|
||||
@GetMapping("/message/list")
|
||||
public PageResult<List<RetryTaskLogMessageResponseVO>> getRetryTaskLogPage(RetryTaskLogMessageQueryVO queryVO) {
|
||||
public RetryTaskLogMessageResponseVO getRetryTaskLogPage(RetryTaskLogMessageQueryVO queryVO) {
|
||||
return retryTaskLogService.getRetryTaskLogMessagePage(queryVO);
|
||||
}
|
||||
|
||||
|
@ -13,4 +13,8 @@ public class RetryTaskLogMessageQueryVO extends BaseQueryVO {
|
||||
private String groupName;
|
||||
|
||||
private String uniqueId;
|
||||
|
||||
private Long startId;
|
||||
|
||||
private Integer fromIndex;
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package com.aizuda.easy.retry.server.web.model.response;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author: www.byteblogs.com
|
||||
@ -13,8 +14,6 @@ public class RetryTaskLogMessageResponseVO {
|
||||
|
||||
private Long id;
|
||||
|
||||
private String message;
|
||||
|
||||
/**
|
||||
* 客户端信息
|
||||
*/
|
||||
@ -22,4 +21,12 @@ public class RetryTaskLogMessageResponseVO {
|
||||
|
||||
private LocalDateTime createDt;
|
||||
|
||||
private Long nextStartId;
|
||||
|
||||
private List message;
|
||||
|
||||
private boolean isFinished;
|
||||
|
||||
private Integer fromIndex;
|
||||
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ public interface RetryTaskLogService {
|
||||
|
||||
PageResult<List<RetryTaskLogResponseVO>> getRetryTaskLogPage(RetryTaskLogQueryVO queryVO);
|
||||
|
||||
PageResult<List<RetryTaskLogMessageResponseVO>> getRetryTaskLogMessagePage(RetryTaskLogMessageQueryVO queryVO);
|
||||
RetryTaskLogMessageResponseVO getRetryTaskLogMessagePage(RetryTaskLogMessageQueryVO queryVO);
|
||||
|
||||
RetryTaskLogResponseVO getRetryTaskLogById(Long id);
|
||||
|
||||
|
@ -22,5 +22,4 @@ public interface RetryTaskLogResponseVOConverter {
|
||||
|
||||
List<RetryTaskLogResponseVO> batchConvert(List<RetryTaskLog> retryTaskLogs);
|
||||
|
||||
List<RetryTaskLogMessageResponseVO> toRetryTaskLogMessageResponseVO(List<RetryTaskLogMessage> retryTaskLogs);
|
||||
}
|
||||
|
@ -1,10 +1,16 @@
|
||||
package com.aizuda.easy.retry.server.web.service.impl;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.aizuda.easy.retry.common.core.util.JsonUtil;
|
||||
import com.aizuda.easy.retry.common.log.constant.LogFieldConstants;
|
||||
import com.aizuda.easy.retry.server.web.model.request.JobLogQueryVO;
|
||||
import com.aizuda.easy.retry.server.web.model.request.UserSessionVO;
|
||||
import com.aizuda.easy.retry.server.web.model.response.JobLogResponseVO;
|
||||
import com.aizuda.easy.retry.server.web.util.UserSessionUtils;
|
||||
import com.aizuda.easy.retry.template.datasource.persistence.mapper.RetryTaskLogMapper;
|
||||
import com.aizuda.easy.retry.template.datasource.persistence.mapper.RetryTaskLogMessageMapper;
|
||||
import com.aizuda.easy.retry.template.datasource.persistence.po.JobLogMessage;
|
||||
import com.aizuda.easy.retry.template.datasource.persistence.po.JobTaskBatch;
|
||||
import com.aizuda.easy.retry.template.datasource.persistence.po.RetryTaskLog;
|
||||
import com.aizuda.easy.retry.template.datasource.persistence.po.RetryTaskLogMessage;
|
||||
import com.aizuda.easy.retry.server.web.model.request.RetryTaskLogMessageQueryVO;
|
||||
@ -17,22 +23,31 @@ import com.aizuda.easy.retry.server.web.service.RetryTaskLogService;
|
||||
import com.aizuda.easy.retry.server.web.service.convert.RetryTaskLogResponseVOConverter;
|
||||
import com.aizuda.easy.retry.server.web.model.request.RetryTaskLogQueryVO;
|
||||
import com.aizuda.easy.retry.server.web.model.response.RetryTaskLogResponseVO;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author: www.byteblogs.com
|
||||
* @date : 2022-02-28 09:10
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class RetryTaskLogServiceImpl implements RetryTaskLogService {
|
||||
|
||||
@Autowired
|
||||
private RetryTaskLogMapper retryTaskLogMapper;
|
||||
@Autowired
|
||||
private RetryTaskLogMessageMapper retryTaskLogMessageMapper;
|
||||
private final RetryTaskLogMapper retryTaskLogMapper;
|
||||
private final RetryTaskLogMessageMapper retryTaskLogMessageMapper;
|
||||
|
||||
@Override
|
||||
public PageResult<List<RetryTaskLogResponseVO>> getRetryTaskLogPage(RetryTaskLogQueryVO queryVO) {
|
||||
@ -74,7 +89,7 @@ public class RetryTaskLogServiceImpl implements RetryTaskLogService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<List<RetryTaskLogMessageResponseVO>> getRetryTaskLogMessagePage(
|
||||
public RetryTaskLogMessageResponseVO getRetryTaskLogMessagePage(
|
||||
RetryTaskLogMessageQueryVO queryVO) {
|
||||
|
||||
String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId();
|
||||
@ -82,20 +97,90 @@ public class RetryTaskLogServiceImpl implements RetryTaskLogService {
|
||||
PageDTO<RetryTaskLogMessage> pageDTO = new PageDTO<>(queryVO.getPage(), queryVO.getSize());
|
||||
LambdaQueryWrapper<RetryTaskLogMessage> retryTaskLogLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
retryTaskLogLambdaQueryWrapper.eq(RetryTaskLogMessage::getNamespaceId, namespaceId);
|
||||
|
||||
if (StrUtil.isNotBlank(queryVO.getGroupName())) {
|
||||
retryTaskLogLambdaQueryWrapper.eq(RetryTaskLogMessage::getGroupName, queryVO.getGroupName());
|
||||
}
|
||||
if (StrUtil.isNotBlank(queryVO.getUniqueId())) {
|
||||
retryTaskLogLambdaQueryWrapper.eq(RetryTaskLogMessage::getUniqueId, queryVO.getUniqueId());
|
||||
retryTaskLogLambdaQueryWrapper.eq(RetryTaskLogMessage::getGroupName, queryVO.getGroupName());
|
||||
retryTaskLogLambdaQueryWrapper.orderByAsc(RetryTaskLogMessage::getId).orderByAsc(RetryTaskLogMessage::getRealTime);
|
||||
|
||||
PageDTO<RetryTaskLogMessage> selectPage = retryTaskLogMessageMapper.selectPage(pageDTO, retryTaskLogLambdaQueryWrapper.orderByDesc(RetryTaskLogMessage::getCreateDt));
|
||||
|
||||
List<RetryTaskLogMessage> records = selectPage.getRecords();
|
||||
|
||||
if (CollectionUtils.isEmpty(records)) {
|
||||
|
||||
RetryTaskLogMessageResponseVO jobLogResponseVO = new RetryTaskLogMessageResponseVO();
|
||||
|
||||
jobLogResponseVO.setFinished(Boolean.TRUE);
|
||||
jobLogResponseVO.setNextStartId(queryVO.getStartId());
|
||||
jobLogResponseVO.setFromIndex(0);
|
||||
return jobLogResponseVO;
|
||||
}
|
||||
|
||||
PageDTO<RetryTaskLogMessage> retryTaskLogPageDTO = retryTaskLogMessageMapper.selectPage(pageDTO, retryTaskLogLambdaQueryWrapper.orderByDesc(RetryTaskLogMessage::getCreateDt));
|
||||
Integer fromIndex = Optional.ofNullable(queryVO.getFromIndex()).orElse(0);
|
||||
RetryTaskLogMessage firstRecord = records.get(0);
|
||||
List<Long> ids = Lists.newArrayList(firstRecord.getId());
|
||||
int total = firstRecord.getLogNum() - fromIndex;
|
||||
for (int i = 1; i < records.size(); i++) {
|
||||
RetryTaskLogMessage record = records.get(i);
|
||||
if (total + record.getLogNum() > queryVO.getSize()) {
|
||||
break;
|
||||
}
|
||||
|
||||
return new PageResult<>(
|
||||
retryTaskLogPageDTO,
|
||||
RetryTaskLogResponseVOConverter.INSTANCE.toRetryTaskLogMessageResponseVO(retryTaskLogPageDTO.getRecords()));
|
||||
total += record.getLogNum();
|
||||
ids.add(record.getId());
|
||||
}
|
||||
|
||||
long nextStartId = 0;
|
||||
List<Map<String, String>> messages = Lists.newArrayList();
|
||||
List<RetryTaskLogMessage> jobLogMessages = retryTaskLogMessageMapper.selectList(
|
||||
new LambdaQueryWrapper<RetryTaskLogMessage>()
|
||||
.in(RetryTaskLogMessage::getId, ids)
|
||||
.orderByAsc(RetryTaskLogMessage::getId)
|
||||
.orderByAsc(RetryTaskLogMessage::getRealTime)
|
||||
);
|
||||
|
||||
for (final RetryTaskLogMessage retryTaskLogMessage : jobLogMessages) {
|
||||
|
||||
List<Map<String, String>> originalList = JsonUtil.parseObject(retryTaskLogMessage.getMessage(), List.class);
|
||||
int size = originalList.size() - fromIndex;
|
||||
List<Map<String, String>> pageList = originalList.stream().skip(fromIndex).limit(queryVO.getSize())
|
||||
.collect(Collectors.toList());
|
||||
|
||||
Map<String, String> map = new HashMap<>(1);
|
||||
map.put("clientInfo", retryTaskLogMessage.getClientInfo());
|
||||
originalList.add(map);
|
||||
|
||||
if (messages.size() + size >= queryVO.getSize()) {
|
||||
messages.addAll(pageList);
|
||||
nextStartId = retryTaskLogMessage.getId();
|
||||
fromIndex = Math.min(fromIndex + queryVO.getSize(), originalList.size() - 1);
|
||||
break;
|
||||
}
|
||||
|
||||
messages.addAll(pageList);
|
||||
nextStartId = retryTaskLogMessage.getId() + 1;
|
||||
fromIndex = 0;
|
||||
|
||||
|
||||
}
|
||||
|
||||
messages = messages.stream().sorted((o1, o2) -> {
|
||||
long value = Long.parseLong(o1.get(LogFieldConstants.TIME_STAMP)) - Long.parseLong(o2.get(LogFieldConstants.TIME_STAMP));
|
||||
|
||||
if (value > 0) {
|
||||
return 1;
|
||||
} else if (value < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
RetryTaskLogMessageResponseVO responseVO = new RetryTaskLogMessageResponseVO();
|
||||
responseVO.setMessage(messages);
|
||||
responseVO.setNextStartId(nextStartId);
|
||||
responseVO.setFromIndex(fromIndex);
|
||||
|
||||
return responseVO;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Loading…
Reference in New Issue
Block a user