feat: 3.2.0
新增重试日志查询接口
This commit is contained in:
parent
0cd93d7b9f
commit
3fbe484724
@ -36,7 +36,7 @@ public class RetryTaskLogController {
|
|||||||
|
|
||||||
@LoginRequired
|
@LoginRequired
|
||||||
@GetMapping("/message/list")
|
@GetMapping("/message/list")
|
||||||
public PageResult<List<RetryTaskLogMessageResponseVO>> getRetryTaskLogPage(RetryTaskLogMessageQueryVO queryVO) {
|
public RetryTaskLogMessageResponseVO getRetryTaskLogPage(RetryTaskLogMessageQueryVO queryVO) {
|
||||||
return retryTaskLogService.getRetryTaskLogMessagePage(queryVO);
|
return retryTaskLogService.getRetryTaskLogMessagePage(queryVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,4 +13,8 @@ public class RetryTaskLogMessageQueryVO extends BaseQueryVO {
|
|||||||
private String groupName;
|
private String groupName;
|
||||||
|
|
||||||
private String uniqueId;
|
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 lombok.Data;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author: www.byteblogs.com
|
* @author: www.byteblogs.com
|
||||||
@ -13,8 +14,6 @@ public class RetryTaskLogMessageResponseVO {
|
|||||||
|
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
private String message;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 客户端信息
|
* 客户端信息
|
||||||
*/
|
*/
|
||||||
@ -22,4 +21,12 @@ public class RetryTaskLogMessageResponseVO {
|
|||||||
|
|
||||||
private LocalDateTime createDt;
|
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<RetryTaskLogResponseVO>> getRetryTaskLogPage(RetryTaskLogQueryVO queryVO);
|
||||||
|
|
||||||
PageResult<List<RetryTaskLogMessageResponseVO>> getRetryTaskLogMessagePage(RetryTaskLogMessageQueryVO queryVO);
|
RetryTaskLogMessageResponseVO getRetryTaskLogMessagePage(RetryTaskLogMessageQueryVO queryVO);
|
||||||
|
|
||||||
RetryTaskLogResponseVO getRetryTaskLogById(Long id);
|
RetryTaskLogResponseVO getRetryTaskLogById(Long id);
|
||||||
|
|
||||||
|
@ -22,5 +22,4 @@ public interface RetryTaskLogResponseVOConverter {
|
|||||||
|
|
||||||
List<RetryTaskLogResponseVO> batchConvert(List<RetryTaskLog> retryTaskLogs);
|
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;
|
package com.aizuda.easy.retry.server.web.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
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.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.server.web.util.UserSessionUtils;
|
||||||
import com.aizuda.easy.retry.template.datasource.persistence.mapper.RetryTaskLogMapper;
|
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.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.RetryTaskLog;
|
||||||
import com.aizuda.easy.retry.template.datasource.persistence.po.RetryTaskLogMessage;
|
import com.aizuda.easy.retry.template.datasource.persistence.po.RetryTaskLogMessage;
|
||||||
import com.aizuda.easy.retry.server.web.model.request.RetryTaskLogMessageQueryVO;
|
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.service.convert.RetryTaskLogResponseVOConverter;
|
||||||
import com.aizuda.easy.retry.server.web.model.request.RetryTaskLogQueryVO;
|
import com.aizuda.easy.retry.server.web.model.request.RetryTaskLogQueryVO;
|
||||||
import com.aizuda.easy.retry.server.web.model.response.RetryTaskLogResponseVO;
|
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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
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.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author: www.byteblogs.com
|
* @author: www.byteblogs.com
|
||||||
* @date : 2022-02-28 09:10
|
* @date : 2022-02-28 09:10
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
public class RetryTaskLogServiceImpl implements RetryTaskLogService {
|
public class RetryTaskLogServiceImpl implements RetryTaskLogService {
|
||||||
|
|
||||||
@Autowired
|
private final RetryTaskLogMapper retryTaskLogMapper;
|
||||||
private RetryTaskLogMapper retryTaskLogMapper;
|
private final RetryTaskLogMessageMapper retryTaskLogMessageMapper;
|
||||||
@Autowired
|
|
||||||
private RetryTaskLogMessageMapper retryTaskLogMessageMapper;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageResult<List<RetryTaskLogResponseVO>> getRetryTaskLogPage(RetryTaskLogQueryVO queryVO) {
|
public PageResult<List<RetryTaskLogResponseVO>> getRetryTaskLogPage(RetryTaskLogQueryVO queryVO) {
|
||||||
@ -74,7 +89,7 @@ public class RetryTaskLogServiceImpl implements RetryTaskLogService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageResult<List<RetryTaskLogMessageResponseVO>> getRetryTaskLogMessagePage(
|
public RetryTaskLogMessageResponseVO getRetryTaskLogMessagePage(
|
||||||
RetryTaskLogMessageQueryVO queryVO) {
|
RetryTaskLogMessageQueryVO queryVO) {
|
||||||
|
|
||||||
String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId();
|
String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId();
|
||||||
@ -82,20 +97,90 @@ public class RetryTaskLogServiceImpl implements RetryTaskLogService {
|
|||||||
PageDTO<RetryTaskLogMessage> pageDTO = new PageDTO<>(queryVO.getPage(), queryVO.getSize());
|
PageDTO<RetryTaskLogMessage> pageDTO = new PageDTO<>(queryVO.getPage(), queryVO.getSize());
|
||||||
LambdaQueryWrapper<RetryTaskLogMessage> retryTaskLogLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<RetryTaskLogMessage> retryTaskLogLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
retryTaskLogLambdaQueryWrapper.eq(RetryTaskLogMessage::getNamespaceId, namespaceId);
|
retryTaskLogLambdaQueryWrapper.eq(RetryTaskLogMessage::getNamespaceId, namespaceId);
|
||||||
|
retryTaskLogLambdaQueryWrapper.eq(RetryTaskLogMessage::getUniqueId, queryVO.getUniqueId());
|
||||||
|
retryTaskLogLambdaQueryWrapper.eq(RetryTaskLogMessage::getGroupName, queryVO.getGroupName());
|
||||||
|
retryTaskLogLambdaQueryWrapper.orderByAsc(RetryTaskLogMessage::getId).orderByAsc(RetryTaskLogMessage::getRealTime);
|
||||||
|
|
||||||
if (StrUtil.isNotBlank(queryVO.getGroupName())) {
|
PageDTO<RetryTaskLogMessage> selectPage = retryTaskLogMessageMapper.selectPage(pageDTO, retryTaskLogLambdaQueryWrapper.orderByDesc(RetryTaskLogMessage::getCreateDt));
|
||||||
retryTaskLogLambdaQueryWrapper.eq(RetryTaskLogMessage::getGroupName, queryVO.getGroupName());
|
|
||||||
}
|
List<RetryTaskLogMessage> records = selectPage.getRecords();
|
||||||
if (StrUtil.isNotBlank(queryVO.getUniqueId())) {
|
|
||||||
retryTaskLogLambdaQueryWrapper.eq(RetryTaskLogMessage::getUniqueId, queryVO.getUniqueId());
|
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<>(
|
total += record.getLogNum();
|
||||||
retryTaskLogPageDTO,
|
ids.add(record.getId());
|
||||||
RetryTaskLogResponseVOConverter.INSTANCE.toRetryTaskLogMessageResponseVO(retryTaskLogPageDTO.getRecords()));
|
}
|
||||||
|
|
||||||
|
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
|
@Override
|
||||||
|
Loading…
Reference in New Issue
Block a user