REM:
1. 修正根据任务Id查询任务分页问题
2. 增加Restful接口超时设置功能
This commit is contained in:
HuangXin 2020-10-10 11:42:18 +08:00
parent 34462a418c
commit 49aadd12a3
6 changed files with 78 additions and 80 deletions

View File

@ -238,7 +238,7 @@ public class DisposeInfoController {
// 对返回的信息按照设备ID排序
rspInfo.setItems(rspList.stream()
.sorted(Comparator.comparing(DeviceDetail::getId))
.sorted(Comparator.comparingLong((DeviceDetail v) -> Long.parseLong(v.getId())))
.collect(Collectors.toList()));
return ProtocolRespDTO.result(ErrorCode.ERR_OK, rspInfo);

View File

@ -321,12 +321,6 @@ public class DisposeTaskController {
return ProtocolRespDTO.result(ErrorCode.ERR_OK, rspList);
}
/**
* Gets all dispose task.
*
* @param mr the mr
* @return the all dispose task
*/
@PostMapping("/taskList")
@ResponseBody
@ApiOperation("获取处置任务")
@ -334,78 +328,70 @@ public class DisposeTaskController {
@Validated(ValidGroups.ProtocolCommonValid.class)
@RequestBody ProtocolReqDTO<BasePagesGetReq> mr
) {
GetTaskRsp rspInfo = GetTaskRsp.builder().build();
GetTaskRsp rspInfo = GetTaskRsp.builder()
.items(new ArrayList<>())
.build();
List<GetTaskDetail> getTaskDetail = new ArrayList<>();
//获取TaskId列表
List<Long> reqTaskIds = Arrays.stream(Optional.ofNullable(mr.getMsgContent().getTaskId())
.orElse(new String[]{})).
map(Long::parseLong).collect(Collectors.toList());
.orElse(new String[]{}))
.map(Long::parseLong)
.collect(Collectors.toList());
//获取所有可用处置任务
List<DisposeTask> taskList = disposeTaskService.getAllDisposeTask();
List<Long> idArray = taskList.stream().filter(v -> reqTaskIds.size() == 0 || reqTaskIds.contains(v.getId()))
.map(DisposeTask::getId).collect(Collectors.toList());
MulReturnType<PageInfo<DisposeTask>, List<DisposeTask>> ret =
disposeTaskService.getPageDisposeTask(reqTaskIds,
mr.getMsgContent().getStartPage(),
mr.getMsgContent().getPageSize());
if (idArray.size() > 0) {
MulReturnType<PageInfo<DisposeTask>, List<DisposeTask>> ret =
disposeTaskService.getPageDisposeTask(idArray,
mr.getMsgContent().getStartPage(),
mr.getMsgContent().getPageSize());
// 分页信息
rspInfo.setCurPageNumber(ret.getFirstParam().getPageNum());
rspInfo.setPageSize(ret.getFirstParam().getPageSize());
rspInfo.setTotalItems((int) ret.getFirstParam().getTotal());
rspInfo.setTotalPages(ret.getFirstParam().getPages());
// 分页信息
rspInfo.setCurPageNumber(ret.getFirstParam().getPageNum());
rspInfo.setPageSize(ret.getFirstParam().getPageSize());
rspInfo.setTotalItems((int) ret.getFirstParam().getTotal());
rspInfo.setTotalPages(ret.getFirstParam().getPages());
ret.getSecondParam().forEach(v -> {
GetTaskDetail taskDetail = GetTaskDetail.builder()
.taskId(String.valueOf(v.getId()))
.accountId(String.valueOf(v.getAccountId()))
.disposeCapacity(v.getDisposeCapacity().getValue())
.disposeIp(v.getDisposeObject())
.createTime(v.getCreateTime())
.planEndTime(v.getPlanEndTime())
.endTime(v.getEndTime())
.flowDirection(v.getFlowDirection().getValue())
.attackType(v.getAttackType().toString())
.flowBandWidth(v.getFlowBandWidth())
.currentStatus(v.getCurrentStatus().getValue())
.deviceTask(new ArrayList<>())
.build();
taskDetail.setStatus(ErrorCode.ERR_OK.getCode());
taskDetail.setMessage(new String[]{ErrorCode.ERR_OK.getMsg()});
v.getDeviceTask().forEach(k -> {
GetDeviceTaskDetail deviceTaskDetail = GetDeviceTaskDetail.builder()
.devTaskId(String.valueOf(k.getId()))
.devId(String.valueOf(k.getDeviceId()))
.externId(String.valueOf(k.getExternId()))
.status(k.getStatus())
.build();
taskDetail.getDeviceTask().add(deviceTaskDetail);
reqTaskIds.stream()
.filter(v -> ret.getSecondParam().stream().noneMatch(k -> k.getId().equals(v)))
.forEach(v -> {
GetTaskDetail td = GetTaskDetail.builder().build();
td.setTaskId(String.valueOf(v));
td.setStatus(ErrorCode.ERR_NOSUCHTASK.getCode());
td.setMessage(new String[]{ErrorCode.ERR_NOSUCHTASK.getMsg()});
getTaskDetail.add(td);
});
getTaskDetail.add(taskDetail);
for (DisposeTask v : ret.getSecondParam()) {
GetTaskDetail taskDetail = GetTaskDetail.builder()
.taskId(String.valueOf(v.getId()))
.accountId(String.valueOf(v.getAccountId()))
.disposeCapacity(v.getDisposeCapacity().getValue())
.disposeIp(v.getDisposeObject())
.createTime(v.getCreateTime())
.planEndTime(v.getPlanEndTime())
.endTime(v.getEndTime())
.flowDirection(v.getFlowDirection().getValue())
.attackType(v.getAttackType().toString())
.flowBandWidth(v.getFlowBandWidth())
.currentStatus(v.getCurrentStatus().getValue())
.deviceTask(new ArrayList<>())
.build();
taskDetail.setStatus(ErrorCode.ERR_OK.getCode());
taskDetail.setMessage(new String[]{ErrorCode.ERR_OK.getMsg()});
v.getDeviceTask().forEach(k -> {
GetDeviceTaskDetail deviceTaskDetail = GetDeviceTaskDetail.builder()
.devTaskId(String.valueOf(k.getId()))
.devId(String.valueOf(k.getDeviceId()))
.externId(String.valueOf(k.getExternId()))
.status(k.getStatus())
.build();
taskDetail.getDeviceTask().add(deviceTaskDetail);
});
getTaskDetail.add(taskDetail);
}
// 设置不存在taskId的错误码
if (reqTaskIds.stream().anyMatch(v -> taskList.stream().noneMatch(k -> k.getId().equals(v)))) {
reqTaskIds.stream()
.filter(v -> taskList.stream().noneMatch(k -> k.getId().equals(v)))
.forEach(v -> {
GetTaskDetail td = GetTaskDetail.builder().build();
td.setTaskId(String.valueOf(v));
td.setStatus(ErrorCode.ERR_NOSUCHTASK.getCode());
td.setMessage(new String[]{ErrorCode.ERR_NOSUCHTASK.getMsg()});
getTaskDetail.add(td);
});
}
// 对返回的信息按照TaskID排序
rspInfo.setItems(getTaskDetail.stream().sorted(Comparator.comparing(GetTaskDetail::getTaskId))
rspInfo.getItems().addAll(getTaskDetail.stream().sorted(Comparator.comparingLong((GetTaskDetail v) -> Long.parseLong(v.getTaskId())))
.collect(Collectors.toList()));
return ProtocolRespDTO.result(ErrorCode.ERR_OK, rspInfo);

View File

@ -16,7 +16,6 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* The type Dispose task manager.
@ -131,25 +130,20 @@ public class DisposeTaskManagerImpl implements DisposeTaskManager {
public MulReturnType<PageInfo<DisposeTask>, List<DisposeTask>> getPagesOfTask(List<Long> taskId,
Integer startPage,
Integer pageSize) {
List<DisposeTask> rspList = new ArrayList<>();
List<DisposeTask> taskList = new ArrayList<>();
// 设置分页信息
PageHelper.startPage(startPage, pageSize);
//获取所有可用处置任务
List<DisposeTask> taskList = disposeTaskMapper.selectPageAll().stream().
filter(v->taskId.size() == 0 || taskId.contains(v.getId())).collect(Collectors.toList());
if (taskList == null) {
taskList = new ArrayList<>();
if(taskId.size() > 0) {
taskList.addAll(disposeTaskMapper.selectByIdSet(taskId));
} else {
taskList.addAll(disposeTaskMapper.selectPageAll());
}
PageInfo<DisposeTask> pageInfo = new PageInfo<>(taskList);
if(taskList.size() > 0) {
List<Long> idArray = taskList.stream().map(DisposeTask::getId).collect(Collectors.toList());
rspList.addAll(disposeTaskMapper.selectByIdSet(idArray));
}
return new MulReturnType<>(pageInfo, rspList);
return new MulReturnType<>(pageInfo, taskList);
}
}

View File

@ -22,11 +22,16 @@ import java.util.Map;
*/
@Slf4j
public class RestfulInterface {
private static int timeOutValue = 1000;
/**
* The constant OBJECT_MAPPER.
*/
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
public static void initEnv(int timeout) {
RestfulInterface.timeOutValue = timeout;
}
/**
* Post json string.
*
@ -36,6 +41,7 @@ public class RestfulInterface {
* @return the string
*/
private static String postJson(String url, Map<String, String> header, String body) {
HttpRequest.setGlobalTimeout(timeOutValue);
return HttpRequest.post(url).header(Header.CONTENT_TYPE, "application/json").addHeaders(header).body(body)
.execute().body();
}
@ -48,6 +54,7 @@ public class RestfulInterface {
* @return the json
*/
private static String getJson(String url, Map<String, String> header) {
HttpRequest.setGlobalTimeout(timeOutValue);
return HttpRequest.get(url).header(Header.CONTENT_TYPE, "application/json").addHeaders(header)
.execute().body();
}

View File

@ -413,6 +413,10 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
}
}
private void yiYangDeviceTaskRun(AbilityInfo ai, DeviceTask deviceTask, DisposeTask disposeTask) {
}
/**
* Dispose task manager schedule.
*/
@ -497,6 +501,10 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
virtualDeviceTaskRun(ai, v, task);
break;
case YIYANG_PLATFORM:
yiYangDeviceTaskRun(ai, v, task);
break;
default:
log.error("Unknown dispose device type: {}", ai.getDev());
break;

View File

@ -3,6 +3,7 @@ package com.dispose.setup;
import com.dispose.common.ErrorCode;
import com.dispose.pojo.po.MulReturnType;
import com.dispose.pojo.vo.DeviceFirewareInfo;
import com.dispose.restful.RestfulInterface;
import com.dispose.service.DisposeAbilityRouterService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.CommandLineRunner;
@ -49,5 +50,7 @@ public class SystemInitial implements CommandLineRunner {
public void run(String... args) {
// 初始化处置能力设备
setupAbilityDevice();
RestfulInterface.initEnv(1000);
}
}