mirror of
https://github.com/PowerJob/PowerJob.git
synced 2025-07-17 00:00:04 +08:00
feat: Add PowerjobClient api /queryInstance #1034
This commit is contained in:
parent
f44bd43d13
commit
4fe2d7fdf1
@ -3,6 +3,7 @@ package tech.powerjob.client;
|
|||||||
import tech.powerjob.common.request.http.SaveJobInfoRequest;
|
import tech.powerjob.common.request.http.SaveJobInfoRequest;
|
||||||
import tech.powerjob.common.request.http.SaveWorkflowNodeRequest;
|
import tech.powerjob.common.request.http.SaveWorkflowNodeRequest;
|
||||||
import tech.powerjob.common.request.http.SaveWorkflowRequest;
|
import tech.powerjob.common.request.http.SaveWorkflowRequest;
|
||||||
|
import tech.powerjob.common.request.query.InstancePageQuery;
|
||||||
import tech.powerjob.common.request.query.JobInfoQuery;
|
import tech.powerjob.common.request.query.JobInfoQuery;
|
||||||
import tech.powerjob.common.response.*;
|
import tech.powerjob.common.response.*;
|
||||||
|
|
||||||
@ -50,6 +51,8 @@ public interface IPowerJobClient {
|
|||||||
|
|
||||||
ResultDTO<InstanceInfoDTO> fetchInstanceInfo(Long instanceId);
|
ResultDTO<InstanceInfoDTO> fetchInstanceInfo(Long instanceId);
|
||||||
|
|
||||||
|
ResultDTO<PageResult<InstanceInfoDTO>> queryInstanceInfo(InstancePageQuery instancePageQuery);
|
||||||
|
|
||||||
/* ************* Workflow API list ************* */
|
/* ************* Workflow API list ************* */
|
||||||
ResultDTO<Long> saveWorkflow(SaveWorkflowRequest request);
|
ResultDTO<Long> saveWorkflow(SaveWorkflowRequest request);
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@ import tech.powerjob.common.exception.PowerJobException;
|
|||||||
import tech.powerjob.common.request.http.SaveJobInfoRequest;
|
import tech.powerjob.common.request.http.SaveJobInfoRequest;
|
||||||
import tech.powerjob.common.request.http.SaveWorkflowNodeRequest;
|
import tech.powerjob.common.request.http.SaveWorkflowNodeRequest;
|
||||||
import tech.powerjob.common.request.http.SaveWorkflowRequest;
|
import tech.powerjob.common.request.http.SaveWorkflowRequest;
|
||||||
|
import tech.powerjob.common.request.query.InstancePageQuery;
|
||||||
import tech.powerjob.common.request.query.JobInfoQuery;
|
import tech.powerjob.common.request.query.JobInfoQuery;
|
||||||
import tech.powerjob.common.response.*;
|
import tech.powerjob.common.response.*;
|
||||||
import tech.powerjob.common.serialize.JsonUtils;
|
import tech.powerjob.common.serialize.JsonUtils;
|
||||||
@ -335,6 +336,13 @@ public class PowerJobClient implements IPowerJobClient, Closeable {
|
|||||||
return JSON.parseObject(post, INSTANCE_RESULT_TYPE);
|
return JSON.parseObject(post, INSTANCE_RESULT_TYPE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResultDTO<PageResult<InstanceInfoDTO>> queryInstanceInfo(InstancePageQuery instancePageQuery) {
|
||||||
|
instancePageQuery.setAppIdEq(appId);
|
||||||
|
String post = requestService.request(OpenAPIConstant.QUERY_INSTANCE, PowerRequestBody.newJsonRequestBody(instancePageQuery));
|
||||||
|
return JSON.parseObject(post, PAGE_INSTANCE_RESULT_TYPE);
|
||||||
|
}
|
||||||
|
|
||||||
/* ************* Workflow API list ************* */
|
/* ************* Workflow API list ************* */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -32,6 +32,8 @@ public class TypeStore {
|
|||||||
|
|
||||||
public static final TypeReference<ResultDTO<List<InstanceInfoDTO>>> LIST_INSTANCE_RESULT_TYPE = new TypeReference<ResultDTO<List<InstanceInfoDTO>>>(){};
|
public static final TypeReference<ResultDTO<List<InstanceInfoDTO>>> LIST_INSTANCE_RESULT_TYPE = new TypeReference<ResultDTO<List<InstanceInfoDTO>>>(){};
|
||||||
|
|
||||||
|
public static final TypeReference<ResultDTO<PageResult<InstanceInfoDTO>>> PAGE_INSTANCE_RESULT_TYPE = new TypeReference<ResultDTO<PageResult<InstanceInfoDTO>>>(){};
|
||||||
|
|
||||||
public static final TypeReference<ResultDTO<WorkflowInfoDTO>> WF_RESULT_TYPE = new TypeReference<ResultDTO<WorkflowInfoDTO>>() {};
|
public static final TypeReference<ResultDTO<WorkflowInfoDTO>> WF_RESULT_TYPE = new TypeReference<ResultDTO<WorkflowInfoDTO>>() {};
|
||||||
|
|
||||||
public static final TypeReference<ResultDTO<WorkflowInstanceInfoDTO>> WF_INSTANCE_RESULT_TYPE = new TypeReference<ResultDTO<WorkflowInstanceInfoDTO>>() {};
|
public static final TypeReference<ResultDTO<WorkflowInstanceInfoDTO>> WF_INSTANCE_RESULT_TYPE = new TypeReference<ResultDTO<WorkflowInstanceInfoDTO>>() {};
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package tech.powerjob.client.test;
|
package tech.powerjob.client.test;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.junit.jupiter.api.Assertions;
|
import org.junit.jupiter.api.Assertions;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
@ -9,6 +10,7 @@ import tech.powerjob.common.enums.ExecuteType;
|
|||||||
import tech.powerjob.common.enums.ProcessorType;
|
import tech.powerjob.common.enums.ProcessorType;
|
||||||
import tech.powerjob.common.enums.TimeExpressionType;
|
import tech.powerjob.common.enums.TimeExpressionType;
|
||||||
import tech.powerjob.common.request.http.SaveJobInfoRequest;
|
import tech.powerjob.common.request.http.SaveJobInfoRequest;
|
||||||
|
import tech.powerjob.common.request.query.InstancePageQuery;
|
||||||
import tech.powerjob.common.response.InstanceInfoDTO;
|
import tech.powerjob.common.response.InstanceInfoDTO;
|
||||||
import tech.powerjob.common.response.JobInfoDTO;
|
import tech.powerjob.common.response.JobInfoDTO;
|
||||||
import tech.powerjob.common.response.ResultDTO;
|
import tech.powerjob.common.response.ResultDTO;
|
||||||
@ -113,6 +115,17 @@ class TestClient extends ClientInitializer {
|
|||||||
Assertions.assertNotNull(res);
|
Assertions.assertNotNull(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testQueryInstanceInfo() {
|
||||||
|
InstancePageQuery instancePageQuery = new InstancePageQuery();
|
||||||
|
instancePageQuery.setJobIdEq(11L);
|
||||||
|
instancePageQuery.setSortBy("actualTriggerTime");
|
||||||
|
instancePageQuery.setAsc(true);
|
||||||
|
instancePageQuery.setPageSize(3);
|
||||||
|
instancePageQuery.setStatusIn(Lists.newArrayList(1,2,5));
|
||||||
|
TestUtils.output(powerJobClient.queryInstanceInfo(instancePageQuery));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testStopInstance() {
|
void testStopInstance() {
|
||||||
ResultDTO<Void> res = powerJobClient.stopInstance(702482902331424832L);
|
ResultDTO<Void> res = powerJobClient.stopInstance(702482902331424832L);
|
||||||
|
@ -0,0 +1,17 @@
|
|||||||
|
package tech.powerjob.client.test;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TestUtils
|
||||||
|
*
|
||||||
|
* @author tjq
|
||||||
|
* @since 2024/11/21
|
||||||
|
*/
|
||||||
|
public class TestUtils {
|
||||||
|
|
||||||
|
public static void output(Object v) {
|
||||||
|
String str = JSONObject.toJSONString(v);
|
||||||
|
System.out.println(str);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
package tech.powerjob.common.request.query;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务实例分页查询
|
||||||
|
*
|
||||||
|
* @author tjq
|
||||||
|
* @since 2024/11/21
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class InstancePageQuery extends PowerPageQuery {
|
||||||
|
|
||||||
|
private Long instanceIdEq;
|
||||||
|
private Long instanceIdLt;
|
||||||
|
private Long instanceIdGt;
|
||||||
|
|
||||||
|
private Long jobIdEq;
|
||||||
|
|
||||||
|
private List<Integer> statusIn;
|
||||||
|
|
||||||
|
|
||||||
|
private Date gmtCreateLt;
|
||||||
|
private Date gmtCreateGt;
|
||||||
|
|
||||||
|
private Date gmtModifiedLt;
|
||||||
|
private Date gmtModifiedGt;
|
||||||
|
}
|
@ -0,0 +1,41 @@
|
|||||||
|
package tech.powerjob.common.request.query;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
import tech.powerjob.common.PowerQuery;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询
|
||||||
|
*
|
||||||
|
* @author tjq
|
||||||
|
* @since 2024/11/21
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class PowerPageQuery extends PowerQuery implements Serializable {
|
||||||
|
|
||||||
|
|
||||||
|
/* ****************** 分页参数 ****************** */
|
||||||
|
/**
|
||||||
|
* 当前页码
|
||||||
|
*/
|
||||||
|
protected Integer index = 0;
|
||||||
|
/**
|
||||||
|
* 页大小
|
||||||
|
*/
|
||||||
|
protected Integer pageSize = 10;
|
||||||
|
|
||||||
|
/* ****************** 排序参数 ****************** */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 排序参数,如 gmtCreate、instanceId
|
||||||
|
*/
|
||||||
|
protected String sortBy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* asc是指定列按升序排列,desc则是指定列按降序排列
|
||||||
|
*/
|
||||||
|
protected boolean asc = false;
|
||||||
|
}
|
@ -0,0 +1,42 @@
|
|||||||
|
package tech.powerjob.common.response;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页对象
|
||||||
|
*
|
||||||
|
* @author tjq
|
||||||
|
* @since 2020/4/12
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Accessors(chain = true)
|
||||||
|
public class PageResult<T> implements Serializable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当前页数
|
||||||
|
*/
|
||||||
|
private int index;
|
||||||
|
/**
|
||||||
|
* 页大小
|
||||||
|
*/
|
||||||
|
private int pageSize;
|
||||||
|
/**
|
||||||
|
* 总页数
|
||||||
|
*/
|
||||||
|
private int totalPages;
|
||||||
|
/**
|
||||||
|
* 总数据量
|
||||||
|
*/
|
||||||
|
private long totalItems;
|
||||||
|
/**
|
||||||
|
* 数据
|
||||||
|
*/
|
||||||
|
private List<T> data;
|
||||||
|
|
||||||
|
}
|
@ -3,8 +3,10 @@ package tech.powerjob.server.core.instance;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
|
import org.springframework.data.domain.Page;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import org.springframework.data.jpa.domain.Specification;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import tech.powerjob.common.PowerQuery;
|
|
||||||
import tech.powerjob.common.RemoteConstant;
|
import tech.powerjob.common.RemoteConstant;
|
||||||
import tech.powerjob.common.SystemInstanceResult;
|
import tech.powerjob.common.SystemInstanceResult;
|
||||||
import tech.powerjob.common.enums.InstanceStatus;
|
import tech.powerjob.common.enums.InstanceStatus;
|
||||||
@ -12,8 +14,10 @@ import tech.powerjob.common.exception.PowerJobException;
|
|||||||
import tech.powerjob.common.model.InstanceDetail;
|
import tech.powerjob.common.model.InstanceDetail;
|
||||||
import tech.powerjob.common.request.ServerQueryInstanceStatusReq;
|
import tech.powerjob.common.request.ServerQueryInstanceStatusReq;
|
||||||
import tech.powerjob.common.request.ServerStopInstanceReq;
|
import tech.powerjob.common.request.ServerStopInstanceReq;
|
||||||
|
import tech.powerjob.common.request.query.InstancePageQuery;
|
||||||
import tech.powerjob.common.response.AskResponse;
|
import tech.powerjob.common.response.AskResponse;
|
||||||
import tech.powerjob.common.response.InstanceInfoDTO;
|
import tech.powerjob.common.response.InstanceInfoDTO;
|
||||||
|
import tech.powerjob.common.response.PageResult;
|
||||||
import tech.powerjob.remote.framework.base.URL;
|
import tech.powerjob.remote.framework.base.URL;
|
||||||
import tech.powerjob.server.common.constants.InstanceType;
|
import tech.powerjob.server.common.constants.InstanceType;
|
||||||
import tech.powerjob.server.common.module.WorkerInfo;
|
import tech.powerjob.server.common.module.WorkerInfo;
|
||||||
@ -27,8 +31,8 @@ import tech.powerjob.server.persistence.remote.model.JobInfoDO;
|
|||||||
import tech.powerjob.server.persistence.remote.repository.InstanceInfoRepository;
|
import tech.powerjob.server.persistence.remote.repository.InstanceInfoRepository;
|
||||||
import tech.powerjob.server.persistence.remote.repository.JobInfoRepository;
|
import tech.powerjob.server.persistence.remote.repository.JobInfoRepository;
|
||||||
import tech.powerjob.server.remote.server.redirector.DesignateServer;
|
import tech.powerjob.server.remote.server.redirector.DesignateServer;
|
||||||
import tech.powerjob.server.remote.transporter.impl.ServerURLFactory;
|
|
||||||
import tech.powerjob.server.remote.transporter.TransportService;
|
import tech.powerjob.server.remote.transporter.TransportService;
|
||||||
|
import tech.powerjob.server.remote.transporter.impl.ServerURLFactory;
|
||||||
import tech.powerjob.server.remote.worker.WorkerClusterQueryService;
|
import tech.powerjob.server.remote.worker.WorkerClusterQueryService;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
@ -228,12 +232,21 @@ public class InstanceService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<InstanceInfoDTO> queryInstanceInfo(PowerQuery powerQuery) {
|
public PageResult<InstanceInfoDTO> queryInstanceInfo(InstancePageQuery instancePageQuery) {
|
||||||
return instanceInfoRepository
|
Specification<InstanceInfoDO> specification = QueryConvertUtils.toSpecification(instancePageQuery);
|
||||||
.findAll(QueryConvertUtils.toSpecification(powerQuery))
|
Pageable pageable = QueryConvertUtils.toPageable(instancePageQuery);
|
||||||
.stream()
|
Page<InstanceInfoDO> instanceInfoDOPage = instanceInfoRepository.findAll(specification, pageable);
|
||||||
.map(InstanceService::directConvert)
|
|
||||||
.collect(Collectors.toList());
|
PageResult<InstanceInfoDTO> ret = new PageResult<>();
|
||||||
|
List<InstanceInfoDTO> instanceInfoDTOList = instanceInfoDOPage.get().map(InstanceService::directConvert).collect(Collectors.toList());
|
||||||
|
|
||||||
|
ret.setData(instanceInfoDTOList)
|
||||||
|
.setIndex(instanceInfoDOPage.getNumber())
|
||||||
|
.setPageSize(instanceInfoDOPage.getSize())
|
||||||
|
.setTotalPages(instanceInfoDOPage.getTotalPages())
|
||||||
|
.setTotalItems(instanceInfoDOPage.getTotalElements());
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,14 +1,18 @@
|
|||||||
package tech.powerjob.server.persistence;
|
package tech.powerjob.server.persistence;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import tech.powerjob.common.exception.PowerJobException;
|
|
||||||
import tech.powerjob.common.PowerQuery;
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.data.domain.PageRequest;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import org.springframework.data.domain.Sort;
|
||||||
import org.springframework.data.jpa.domain.Specification;
|
import org.springframework.data.jpa.domain.Specification;
|
||||||
|
import tech.powerjob.common.PowerQuery;
|
||||||
|
import tech.powerjob.common.exception.PowerJobException;
|
||||||
|
import tech.powerjob.common.request.query.PowerPageQuery;
|
||||||
|
|
||||||
import javax.persistence.criteria.*;
|
import javax.persistence.criteria.Predicate;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -86,6 +90,26 @@ public class QueryConvertUtils {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Pageable toPageable(PowerPageQuery powerPageQuery) {
|
||||||
|
|
||||||
|
Sort sorter = null;
|
||||||
|
String sortBy = powerPageQuery.getSortBy();
|
||||||
|
if (StringUtils.isNoneEmpty(sortBy)) {
|
||||||
|
sorter = Sort.by(sortBy);
|
||||||
|
if (powerPageQuery.isAsc()) {
|
||||||
|
sorter.ascending();
|
||||||
|
} else {
|
||||||
|
sorter.descending();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sorter == null) {
|
||||||
|
return PageRequest.of(powerPageQuery.getIndex(), powerPageQuery.getPageSize());
|
||||||
|
}
|
||||||
|
|
||||||
|
return PageRequest.of(powerPageQuery.getIndex(), powerPageQuery.getPageSize(), sorter);
|
||||||
|
}
|
||||||
|
|
||||||
public static String convertLikeParams(Object o) {
|
public static String convertLikeParams(Object o) {
|
||||||
String s = (String) o;
|
String s = (String) o;
|
||||||
if (!s.startsWith("%")) {
|
if (!s.startsWith("%")) {
|
||||||
|
@ -7,13 +7,13 @@ import org.springframework.web.bind.annotation.*;
|
|||||||
import tech.powerjob.client.module.AppAuthRequest;
|
import tech.powerjob.client.module.AppAuthRequest;
|
||||||
import tech.powerjob.client.module.AppAuthResult;
|
import tech.powerjob.client.module.AppAuthResult;
|
||||||
import tech.powerjob.common.OpenAPIConstant;
|
import tech.powerjob.common.OpenAPIConstant;
|
||||||
import tech.powerjob.common.PowerQuery;
|
|
||||||
import tech.powerjob.common.enums.ErrorCodes;
|
import tech.powerjob.common.enums.ErrorCodes;
|
||||||
import tech.powerjob.common.enums.InstanceStatus;
|
import tech.powerjob.common.enums.InstanceStatus;
|
||||||
import tech.powerjob.common.exception.PowerJobException;
|
import tech.powerjob.common.exception.PowerJobException;
|
||||||
import tech.powerjob.common.request.http.SaveJobInfoRequest;
|
import tech.powerjob.common.request.http.SaveJobInfoRequest;
|
||||||
import tech.powerjob.common.request.http.SaveWorkflowNodeRequest;
|
import tech.powerjob.common.request.http.SaveWorkflowNodeRequest;
|
||||||
import tech.powerjob.common.request.http.SaveWorkflowRequest;
|
import tech.powerjob.common.request.http.SaveWorkflowRequest;
|
||||||
|
import tech.powerjob.common.request.query.InstancePageQuery;
|
||||||
import tech.powerjob.common.request.query.JobInfoQuery;
|
import tech.powerjob.common.request.query.JobInfoQuery;
|
||||||
import tech.powerjob.common.response.*;
|
import tech.powerjob.common.response.*;
|
||||||
import tech.powerjob.server.core.instance.InstanceService;
|
import tech.powerjob.server.core.instance.InstanceService;
|
||||||
@ -183,7 +183,7 @@ public class OpenAPIController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping(OpenAPIConstant.QUERY_INSTANCE)
|
@PostMapping(OpenAPIConstant.QUERY_INSTANCE)
|
||||||
public ResultDTO<List<InstanceInfoDTO>> queryInstance(@RequestBody PowerQuery powerQuery) {
|
public ResultDTO<PageResult<InstanceInfoDTO>> queryInstance(@RequestBody InstancePageQuery powerQuery) {
|
||||||
return ResultDTO.success(instanceService.queryInstanceInfo(powerQuery));
|
return ResultDTO.success(instanceService.queryInstanceInfo(powerQuery));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user