作业相关接口优化

This commit is contained in:
lqyan
2024-02-06 17:34:33 +08:00
parent 83a6392db6
commit f35455ab22
6 changed files with 113 additions and 38 deletions

View File

@@ -85,8 +85,9 @@ public class JHJobApiExecution extends JHApiExecution {
* @param status 作业状态(非必填) * @param status 作业状态(非必填)
* @param condition 自定义条件(非必填) * @param condition 自定义条件(非必填)
* @return 作业列表 * @return 作业列表
* @see JobStatusEnum
*/ */
public PageJobInfo getJobPage(String username, Integer page, Integer pageSize, String name, String status, Map<String, Object> condition) { public PageJobInfo getJobPage(String username, Integer page, Integer pageSize, String name, JobStatusEnum status, Map<String, Object> condition) {
Map<String, Object> params = new HashMap<>(5); Map<String, Object> params = new HashMap<>(5);
if (page != null) { if (page != null) {
params.put("page", page); params.put("page", page);
@@ -97,8 +98,8 @@ public class JHJobApiExecution extends JHApiExecution {
if (StringUtils.isNotBlank(name)) { if (StringUtils.isNotBlank(name)) {
params.put("jobName", name); params.put("jobName", name);
} }
if (StringUtils.isBlank(status)) { if (status != null) {
params.put("status", status); params.put("status", status.getStatus());
} }
if (CollectionUtil.isNotEmpty(condition)) { if (CollectionUtil.isNotEmpty(condition)) {
params.put("condition", JSONUtil.toJsonStr(params)); params.put("condition", JSONUtil.toJsonStr(params));
@@ -108,6 +109,22 @@ public class JHJobApiExecution extends JHApiExecution {
}); });
} }
/**
* 分页查询作业列表
* <p>作业名、作业状态等为非必填自动,如果为空则没有添加该查询条件</p
*
* @param username 用户名
* @param page 页码非必填默认1
* @param pageSize 每页大小非必填默认20
* @param name 作业名(非必填)
* @param status 作业状态(非必填),取值见{@link JobStatusEnum#getJobStatus(String)}
* @param condition 自定义条件(非必填)
* @return 作业列表
* @see JobStatusEnum
*/
public PageJobInfo getJobPage(String username, Integer page, Integer pageSize, String name, String status, Map<String, Object> condition) {
return getJobPage(username, page, pageSize, name, JobStatusEnum.getJobStatus(status), condition);
}
/** /**
* 查询作业详情 * 查询作业详情
@@ -157,18 +174,7 @@ public class JHJobApiExecution extends JHApiExecution {
/** /**
* 分页检索作业状态 * 分页检索作业状态
* <p> * <p>
* status作业状态的取值如下 * 可通过{@link JobStatusEnum#getJobStatus(String)} 获得{@link JobStatusEnum}
* <ol>
* <li>RUN运行</li>
* <li>PEND等待</li>
* <li>PSUSP等待中挂起</li>
* <li>USUSP用户挂起</li>
* <li>SSUSP系统挂起</li>
* <li>ZOMBI僵尸</li>
* <li>DONE完成</li>
* <li>EXIT退出</li>
* <li>UNKNOWN#UNKWN状态不明</li>
* </ol>
* *
* @param username 用户名 * @param username 用户名
* @param status 作业状态 * @param status 作业状态
@@ -176,8 +182,8 @@ public class JHJobApiExecution extends JHApiExecution {
* @param pageSize 分页大小 * @param pageSize 分页大小
* @return 作业列表 * @return 作业列表
*/ */
public List<JobInfo> getJobsByStatus(String username, String status, Integer page, Integer pageSize) { public List<JobInfo> getJobsByStatus(String username, JobStatusEnum status, Integer page, Integer pageSize) {
if (StringUtils.isBlank(status)) { if (status == null) {
throw new ArgsException("status不能为空"); throw new ArgsException("status不能为空");
} }
Map<String, Object> params = new HashMap<>(3); Map<String, Object> params = new HashMap<>(3);
@@ -187,12 +193,27 @@ public class JHJobApiExecution extends JHApiExecution {
if (pageSize != null) { if (pageSize != null) {
params.put("pageSize", pageSize); params.put("pageSize", pageSize);
} }
String path = JHApiClient.getUrl(JobPathConstant.JOB_LIST_BY_STATUS_PATH.replace("{status}", status), params); String path = JHApiClient.getUrl(JobPathConstant.JOB_LIST_BY_STATUS_PATH.replace("{status}", status.getStatus()), params);
return get(path, username, new TypeReference<ResponseResult<List<JobInfo>>>() { return get(path, username, new TypeReference<ResponseResult<List<JobInfo>>>() {
}); });
} }
/**
* 作业的状态(必填),
*
* @param username 用户名
* @param status 作业状态,取值见{@link JobStatusEnum#getStatus()}
* @param page 页码
* @param pageSize 分页大小
* @return 作业列表
* @see JobStatusEnum
*/
public List<JobInfo> getJobsByStatus(String username, String status, Integer page, Integer pageSize) {
return getJobsByStatus(username, JobStatusEnum.getJobStatus(status), page, pageSize);
}
/** /**
* 通过作业id列表查询作业列表 * 通过作业id列表查询作业列表
* *
@@ -283,7 +304,6 @@ public class JHJobApiExecution extends JHApiExecution {
/** /**
* +
* 查询制定作业的作业历史 * 查询制定作业的作业历史
* *
* @param username 用户名 * @param username 用户名

View File

@@ -53,6 +53,9 @@ public enum JobActionEnum {
* @throws ArgsException action的类型不存在的异常 * @throws ArgsException action的类型不存在的异常
*/ */
public static JobActionEnum getJobAction(String action) { public static JobActionEnum getJobAction(String action) {
if (StringUtils.isBlank(action)) {
throw new ArgsException("操作标识不能为空!");
}
for (JobActionEnum value : values()) { for (JobActionEnum value : values()) {
if (StringUtils.equals(action, value.getAction())) { if (StringUtils.equals(action, value.getAction())) {
return value; return value;

View File

@@ -36,22 +36,8 @@ public class JobInfo {
/** /**
* 作业状态 * 作业状态
* <p> * <p>
* 可能的取值<br/> * 可能的取值见:{@link JobStatusEnum}<br/>
* <ol> * 如果作业是数组作业即arrayJob="true"时status的类型是一个map类型<br/>
* <li>RUN运行</li>
* <li>PEND等待</li>
* <li>PSUSP等待中挂起</li>
* <li>USUSP用户挂起</li>
* <li>SSUSP系统挂起</li>
* <li>ZOMBI僵尸</li>
* <li>DONE完成</li>
* <li>EXIT退出</li>
* <li>UNKNOWN#UNKWN状态不明</li>
* </ol>
*
* </p>
* <p>
* 数组作业及arrayJob="true"时status的类型是一个map<br/>
* 如:{"done":1,"run":12} * 如:{"done":1,"run":12}
* </p> * </p>
*/ */

View File

@@ -0,0 +1,62 @@
package com.jhinno.sdk.openapi.api.job;
import com.jhinno.sdk.openapi.ArgsException;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.apache.commons.lang3.StringUtils;
/**
* 作业状态
* <p>
* 该枚举表示作业的状态的类型其中status标识接口中的值name标识对应的中文状态
*
* @author yanlongqi
* @date 2024/2/6 17:03
*/
@Getter
@AllArgsConstructor
public enum JobStatusEnum {
RUN("RUN", "运行"),
PEND("PEND", "等待"),
PSUSP("PSUSP", "等待中挂起"),
USUSP("USUSP", "用户挂起"),
SSUSP("SSUSP", "系统挂起"),
ZOMBI("ZOMBI", "僵尸"),
DONE("DONE", "完成"),
EXIT("EXIT", "退出"),
UNKNOWN_UNKWN("UNKNOWN#UNKWN", "状态不明");
/**
* 状态标识
*/
private final String status;
/**
* 状态名称
*/
private final String name;
/**
* 使用标号获得JobStatusEnum对象
*
* @param status 作业状态
* @return 作业状态
* @throws ArgsException 参数异常
*/
public static JobStatusEnum getJobStatus(String status) {
if (StringUtils.isBlank(status)) {
throw new ArgsException("作业状态不能为空!");
}
for (JobStatusEnum value : values()) {
if (StringUtils.equals(status, value.getStatus())) {
return value;
}
}
throw new ArgsException(status + "类型不存在!");
}
}

View File

@@ -38,9 +38,12 @@ public enum JobsActionEnum {
* *
* @param action 操作字符 * @param action 操作字符
* @return 作业操作类型 * @return 作业操作类型
* @exception ArgsException action的类型不存在的异常 * @throws ArgsException action的类型不存在的异常
*/ */
public static JobsActionEnum getJobAction(String action) { public static JobsActionEnum getJobAction(String action) {
if (StringUtils.isBlank(action)) {
throw new ArgsException("操作标识不能为空!");
}
for (JobsActionEnum value : values()) { for (JobsActionEnum value : values()) {
if (StringUtils.equals(action, value.getAction())) { if (StringUtils.equals(action, value.getAction())) {
return value; return value;

View File

@@ -2,6 +2,7 @@ package com.jhinno.sdk.openapi.test.job;
import com.jhinno.sdk.openapi.api.job.JHJobApiExecution; import com.jhinno.sdk.openapi.api.job.JHJobApiExecution;
import com.jhinno.sdk.openapi.api.job.JobHistoryInfo; import com.jhinno.sdk.openapi.api.job.JobHistoryInfo;
import com.jhinno.sdk.openapi.api.job.JobStatusEnum;
import com.jhinno.sdk.openapi.api.job.PageJobInfo; import com.jhinno.sdk.openapi.api.job.PageJobInfo;
import com.jhinno.sdk.openapi.test.JHClientConfig; import com.jhinno.sdk.openapi.test.JHClientConfig;
import org.junit.Test; import org.junit.Test;
@@ -47,7 +48,7 @@ public class JobApiTest {
*/ */
@Test @Test
public void testGetJobPage() { public void testGetJobPage() {
PageJobInfo jhadmin = execution.getJobPage("jhadmin", 1, 5, null, null, null); PageJobInfo jhadmin = execution.getJobPage("jhadmin", 1, 5, null, JobStatusEnum.DONE, null);
System.out.println(jhadmin); System.out.println(jhadmin);
} }
@@ -73,7 +74,7 @@ public class JobApiTest {
*/ */
@Test @Test
public void testGetJobsByStatus() { public void testGetJobsByStatus() {
System.out.println(execution.getJobsByStatus("jhadmin", "DONE", 1, 10)); System.out.println(execution.getJobsByStatus("jhadmin", JobStatusEnum.DONE, 1, 10));
} }