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排序 // 对返回的信息按照设备ID排序
rspInfo.setItems(rspList.stream() rspInfo.setItems(rspList.stream()
.sorted(Comparator.comparing(DeviceDetail::getId)) .sorted(Comparator.comparingLong((DeviceDetail v) -> Long.parseLong(v.getId())))
.collect(Collectors.toList())); .collect(Collectors.toList()));
return ProtocolRespDTO.result(ErrorCode.ERR_OK, rspInfo); return ProtocolRespDTO.result(ErrorCode.ERR_OK, rspInfo);

View File

@ -321,12 +321,6 @@ public class DisposeTaskController {
return ProtocolRespDTO.result(ErrorCode.ERR_OK, rspList); return ProtocolRespDTO.result(ErrorCode.ERR_OK, rspList);
} }
/**
* Gets all dispose task.
*
* @param mr the mr
* @return the all dispose task
*/
@PostMapping("/taskList") @PostMapping("/taskList")
@ResponseBody @ResponseBody
@ApiOperation("获取处置任务") @ApiOperation("获取处置任务")
@ -334,78 +328,70 @@ public class DisposeTaskController {
@Validated(ValidGroups.ProtocolCommonValid.class) @Validated(ValidGroups.ProtocolCommonValid.class)
@RequestBody ProtocolReqDTO<BasePagesGetReq> mr @RequestBody ProtocolReqDTO<BasePagesGetReq> mr
) { ) {
GetTaskRsp rspInfo = GetTaskRsp.builder().build(); GetTaskRsp rspInfo = GetTaskRsp.builder()
.items(new ArrayList<>())
.build();
List<GetTaskDetail> getTaskDetail = new ArrayList<>(); List<GetTaskDetail> getTaskDetail = new ArrayList<>();
//获取TaskId列表 //获取TaskId列表
List<Long> reqTaskIds = Arrays.stream(Optional.ofNullable(mr.getMsgContent().getTaskId()) List<Long> reqTaskIds = Arrays.stream(Optional.ofNullable(mr.getMsgContent().getTaskId())
.orElse(new String[]{})). .orElse(new String[]{}))
map(Long::parseLong).collect(Collectors.toList()); .map(Long::parseLong)
.collect(Collectors.toList());
//获取所有可用处置任务 MulReturnType<PageInfo<DisposeTask>, List<DisposeTask>> ret =
List<DisposeTask> taskList = disposeTaskService.getAllDisposeTask(); disposeTaskService.getPageDisposeTask(reqTaskIds,
List<Long> idArray = taskList.stream().filter(v -> reqTaskIds.size() == 0 || reqTaskIds.contains(v.getId())) mr.getMsgContent().getStartPage(),
.map(DisposeTask::getId).collect(Collectors.toList()); mr.getMsgContent().getPageSize());
if (idArray.size() > 0) { // 分页信息
MulReturnType<PageInfo<DisposeTask>, List<DisposeTask>> ret = rspInfo.setCurPageNumber(ret.getFirstParam().getPageNum());
disposeTaskService.getPageDisposeTask(idArray, rspInfo.setPageSize(ret.getFirstParam().getPageSize());
mr.getMsgContent().getStartPage(), rspInfo.setTotalItems((int) ret.getFirstParam().getTotal());
mr.getMsgContent().getPageSize()); rspInfo.setTotalPages(ret.getFirstParam().getPages());
// 分页信息 reqTaskIds.stream()
rspInfo.setCurPageNumber(ret.getFirstParam().getPageNum()); .filter(v -> ret.getSecondParam().stream().noneMatch(k -> k.getId().equals(v)))
rspInfo.setPageSize(ret.getFirstParam().getPageSize()); .forEach(v -> {
rspInfo.setTotalItems((int) ret.getFirstParam().getTotal()); GetTaskDetail td = GetTaskDetail.builder().build();
rspInfo.setTotalPages(ret.getFirstParam().getPages()); td.setTaskId(String.valueOf(v));
td.setStatus(ErrorCode.ERR_NOSUCHTASK.getCode());
ret.getSecondParam().forEach(v -> { td.setMessage(new String[]{ErrorCode.ERR_NOSUCHTASK.getMsg()});
GetTaskDetail taskDetail = GetTaskDetail.builder() getTaskDetail.add(td);
.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); 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的错误码 rspInfo.getItems().addAll(getTaskDetail.stream().sorted(Comparator.comparingLong((GetTaskDetail v) -> Long.parseLong(v.getTaskId())))
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))
.collect(Collectors.toList())); .collect(Collectors.toList()));
return ProtocolRespDTO.result(ErrorCode.ERR_OK, rspInfo); return ProtocolRespDTO.result(ErrorCode.ERR_OK, rspInfo);

View File

@ -16,7 +16,6 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* The type Dispose task manager. * The type Dispose task manager.
@ -131,25 +130,20 @@ public class DisposeTaskManagerImpl implements DisposeTaskManager {
public MulReturnType<PageInfo<DisposeTask>, List<DisposeTask>> getPagesOfTask(List<Long> taskId, public MulReturnType<PageInfo<DisposeTask>, List<DisposeTask>> getPagesOfTask(List<Long> taskId,
Integer startPage, Integer startPage,
Integer pageSize) { Integer pageSize) {
List<DisposeTask> rspList = new ArrayList<>(); List<DisposeTask> taskList = new ArrayList<>();
// 设置分页信息 // 设置分页信息
PageHelper.startPage(startPage, pageSize); PageHelper.startPage(startPage, pageSize);
//获取所有可用处置任务 if(taskId.size() > 0) {
List<DisposeTask> taskList = disposeTaskMapper.selectPageAll().stream(). taskList.addAll(disposeTaskMapper.selectByIdSet(taskId));
filter(v->taskId.size() == 0 || taskId.contains(v.getId())).collect(Collectors.toList()); } else {
taskList.addAll(disposeTaskMapper.selectPageAll());
if (taskList == null) {
taskList = new ArrayList<>();
} }
PageInfo<DisposeTask> pageInfo = new PageInfo<>(taskList); 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 @Slf4j
public class RestfulInterface { public class RestfulInterface {
private static int timeOutValue = 1000;
/** /**
* The constant OBJECT_MAPPER. * The constant OBJECT_MAPPER.
*/ */
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
public static void initEnv(int timeout) {
RestfulInterface.timeOutValue = timeout;
}
/** /**
* Post json string. * Post json string.
* *
@ -36,6 +41,7 @@ public class RestfulInterface {
* @return the string * @return the string
*/ */
private static String postJson(String url, Map<String, String> header, String body) { 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) return HttpRequest.post(url).header(Header.CONTENT_TYPE, "application/json").addHeaders(header).body(body)
.execute().body(); .execute().body();
} }
@ -48,6 +54,7 @@ public class RestfulInterface {
* @return the json * @return the json
*/ */
private static String getJson(String url, Map<String, String> header) { 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) return HttpRequest.get(url).header(Header.CONTENT_TYPE, "application/json").addHeaders(header)
.execute().body(); .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. * Dispose task manager schedule.
*/ */
@ -497,6 +501,10 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
virtualDeviceTaskRun(ai, v, task); virtualDeviceTaskRun(ai, v, task);
break; break;
case YIYANG_PLATFORM:
yiYangDeviceTaskRun(ai, v, task);
break;
default: default:
log.error("Unknown dispose device type: {}", ai.getDev()); log.error("Unknown dispose device type: {}", ai.getDev());
break; break;

View File

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